{"id":"image-x-3ds","mimeType":"image/x-3ds","name":"Autodesk 3D Studio","shortName":"3DS","category":"3D Graphics \u0026 Modeling","extensions":[".3ds"],"description":"The image/x-3ds MIME type represents the legacy Autodesk 3D Studio (3DS) file format. Created in 1990 for the MS-DOS-based 3D Studio software (the predecessor to modern 3ds Max), it utilizes a binary, chunk-based structure. It stores 3D mesh geometry (vertices and polygons), material properties, texture mapping coordinates, lighting, camera data, and basic keyframe animation. Because of its early dominance in the 3D graphics industry, it became a universal exchange format, though its strict 16-bit limitations make it unsuitable for modern, high-fidelity 3D assets.","seo":{"title":"image/x-3ds MIME Type | Developer Reference for Autodesk 3DS","description":"Complete reference for the image/x-3ds MIME type: Autodesk 3D Studio format, 3DS mesh data, chunk-based binary structure, and legacy 3D modeling.","faqs":[{"question":"What is a 3DS file?","answer":"A 3DS file is a 3D graphics format created by Autodesk in the 1990s. It stores 3D models, including their geometry, materials, and basic lighting, using a chunk-based binary structure."},{"question":"Why is my 3DS model missing textures?","answer":"The 3DS format was built for MS-DOS, which strictly enforced the '8.3' filename limit (8 characters for the name, 3 for the extension). If your texture filenames are longer than 8 characters, the 3DS format will truncate them, causing texture links to break when opened in modern software."},{"question":"What is the vertex limit for a 3DS file?","answer":"Due to its 16-bit integer architecture, a single mesh object within a 3DS file cannot contain more than 65,536 vertices or polygons. Modern 3D models easily exceed this, meaning they must be split into multiple smaller objects before being exported to 3DS."}]},"index":{"compression":["Uncompressed Binary (Chunk-based)"],"browserSupport":{"score":1,"label":"None"},"commonUses":["Legacy 3D Model Exchange","Low-Poly Game Assets","Historical 3D Archival and Academic Use"]},"technical":{"magicBytes":{"hex":"4D 4D","ascii":"MM"},"container":"Binary Chunk System","compressionAlgorithm":["None"],"colorDepth":["Not Applicable (Stores 3D geometry and material RGB definitions)"],"transparency":true,"animation":true,"metadata":{"exif":false,"xmp":false,"iccProfile":false},"alphaChannel":false,"progressiveLoading":false,"hdrSupport":false},"history":{"developer":"Autodesk (The Yost Group)","released":"1990","specification":"Unofficial (Reverse-engineered community documentation)"},"browserSupport":{"chrome":false,"chromeVersion":"None","firefox":false,"firefoxVersion":"None","safari":false,"safariVersion":"None","edge":false,"edgeVersion":"None","internetExplorer":false},"softwareSupport":[{"name":"Autodesk 3ds Max","logo":""},{"name":"Blender","logo":""},{"name":"MeshLab","logo":""},{"name":"Unity","logo":""}],"conversion":{"convertTo":["obj","fbx","gltf","dae"],"convertFrom":["obj","fbx","dae"]},"developer":{"httpHeaders":[{"header":"Content-Type","value":"image/x-3ds"},{"header":"Content-Type","value":"application/x-3ds"}],"htmlAccept":"image/x-3ds, .3ds","fileDetection":["Check the first two bytes for the Main Chunk ID: 0x4D4D (Hex: 4D 4D).","The next four bytes represent the 32-bit little-endian integer for the total size of the chunk, which should typically match the total size of the file.","The format is strictly composed of hierarchical chunks (ID + Length + Data)."]},"prosCons":{"pros":["Nearly universal support; practically every 3D modeling application created in the last 30 years can read and write 3DS files","Extremely simple, well-documented binary structure that is trivial to parse for custom rendering engines"],"cons":["Hard limit of 65,536 vertices and polygons per mesh due to 16-bit addressing","Enforces archaic 8.3 MS-DOS filename length restrictions for all linked texture files","Lacks support for modern 3D concepts like skeletal animation (rigging), normal mapping, and physically based rendering (PBR)"]},"specifications":{"url":"https://en.wikipedia.org/wiki/.3ds","rfc":"","mimeAliases":["application/x-3ds","image/3ds"]},"developerSnippets":{"python":"import magic\n# Libmagic may struggle to uniquely identify 3DS and often outputs 'application/octet-stream'\n# Checking the 4D 4D chunk header manually:\nwith open('model.3ds', 'rb') as f:\n    is_3ds = f.read(2) == b'\\x4D\\x4D'\n    print('Is 3DS:', is_3ds)","nodejs":"const fs = require('fs');\n// Manually detecting the 3DS main chunk ID (0x4D4D)\nconst buffer = Buffer.alloc(2);\nconst fd = fs.openSync('model.3ds', 'r');\nfs.readSync(fd, buffer, 0, 2, 0);\nfs.closeSync(fd);\nconst is3DS = buffer[0] === 0x4D \u0026\u0026 buffer[1] === 0x4D;\nconsole.log('Is 3DS File:', is3DS);","go":"import (\n    \"bytes\"\n    \"net/http\"\n)\n// http.DetectContentType will generally return 'application/octet-stream'.\n// You must perform a direct prefix check for the chunk ID.\n// is3DS := bytes.HasPrefix(buf, []byte{0x4D, 0x4D})","php":"$mime = mime_content_type('model.3ds');\necho $mime; // Standard setups will often resolve this to 'application/octet-stream' without custom magic byte definitions."},"relatedFormats":["obj","fbx","max","gltf"]}
