# Third-party 3D content on mn-f.com This file is published at https://mn-f.com/models/CREDITS.md and ships with the model and the code it describes. It carries the notices required by the licenses below: the arm meshes, the three.js library and the meshoptimizer decoder bundled into the site's JavaScript. ## arm.v2.glb: six-axis robot arm meshes - Source: https://github.com/Annin-Robotics/ar4_ros_driver, path `annin_ar4_description/meshes/ar4/` (`base_link.STL`, `link_1.STL` to `link_6.STL`). Joint frames (origins and axes) from `annin_ar4_description/urdf/ar_macro.xacro` in the fork https://github.com/ycheng517/ar4_ros_driver. - Author and copyright: Copyright (c) 2021 Dexter Ong. The arm design is by Annin Robotics; the meshes derive from its published CAD. - License: MIT (text below). The product name is not shown on the site; no logo or mark of Annin Robotics appears on the model or the page. - Downloaded 2026-10-03. ### Modifications (scripts/models/build-arm.py, Blender 4.2.23) 1. Each STL imported at scale 3.0 (the arm reads as a mid-size industrial unit; scene units metres). 2. Each link split into its loose shells and the shells regrouped into five named materials by part type: `paint` (covers), `cast` (base, bearing housings), `motor` (NEMA 17 and 23 stepper bodies), `alu` (flanges, tool plate), `dark` (shafts, couplers). Materials are flat PBR colours, no textures; the site overrides them by name at run time. 3. Joint hierarchy rebuilt as empties `j1_frame` > `j1` > ... > `j6` with the URDF origins; each `jN` node carries the extra `axis` (unit vector of its rotation axis in its own frame). Rest pose is all joints at zero. 4. Smooth shading by angle (30 degrees), normals exported, no UVs. 4a. Ambient occlusion baked per vertex in Cycles (rest pose, 96 samples, distance 0.36 m), remapped to 0.45..1 and exported as `COLOR_0`; the site multiplies it into the base colour. 5. Exported as GLB (Y up), then compressed: ``` LD_LIBRARY_PATH= blender -b --python scripts/models/build-arm.py -- arm.raw.glb npx --yes @gltf-transform/cli@4.5.1 optimize arm.raw.glb arm.v2.glb \ --compress meshopt --meshopt-level high --simplify false --join false --flatten false \ --instance false --texture-compress false --palette false ``` Result: 477,460 bytes, 52,284 triangles, 25 meshes, 38 nodes, extensions `EXT_meshopt_compression` + `KHR_mesh_quantization`, sha256 ed7e39a5773df567... (v1, without the baked occlusion, was 357,660 bytes). ### Modifications at run time (src/lib/components/home/machine/dress.js, materials.js) 6. The stepper bodies (material group `motor`) are hidden and enclosed in turned servo housings built in code (lathe profiles: painted body, graphite encoder cover and flange ring). 7. The upper-arm and forearm covers (`link_2_paint`, `link_4_paint`) are scaled 1.2x across their long axis; a clamped two-line cable loom built in code runs along both links. 8. All materials get a procedural surface in the shader (roughness variation and a faint bump from value noise in object space); the GLB itself still carries no textures. Everything else in the hero scene (pedestal, floor plate, control cabinet and its contents, operator panel, drag-chain cabling, pneumatic gripper, servo housings, cable looms, backdrop) is built in code from three.js primitives and is MN-F's own. ### MIT License Copyright (c) 2021 Dexter Ong Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## poster.v3-1440 and poster.v3-390 (.avif, .webp) Still renders of the same arm, dressed as above, inside the code-built cell (cabinet, panel, cabling, floor plate and gripper are original work for mn-f.com), made with `scripts/models/poster.mjs` from the live viewer at the home pose on 2026-10-04. They carry the arm's MIT notice above. (poster.v2-* are the superseded renders of the undressed arm.) ## three.js (bundled in the site's JavaScript) Source: https://github.com/mrdoob/three.js, npm package `three` 0.186. The core library and the addons GLTFLoader, OrbitControls, RoomEnvironment, RoundedBoxGeometry and BufferGeometryUtils are bundled, minified, into the home page's 3D chunk. The MIT License Copyright © 2010-2026 three.js authors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## meshoptimizer decoder (bundled in the site's JavaScript) Source: https://github.com/zeux/meshoptimizer (version 1.1), shipped inside the `three` package as `examples/jsm/libs/meshopt_decoder.module.js` and bundled with the 3D chunk; it decodes the `EXT_meshopt_compression` data in arm.v2.glb. MIT License Copyright (c) 2016-2026 Arseny Kapoulkine Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ## Candidates reviewed and not used Poly Haven (CC0: overhead_crane, drill_press_01, portable_generator, old_military_compressor, power_box_01), microsoft/experimental-pcf-control-assets (CC-BY-4.0: robot_arm, machine, forklift, conveyor_belt, hvac), opengameart.org/content/excavator (CC0), NASA-3D-Resources Crawler. None of their geometry is in this repository.