{"id":24822112,"url":"https://github.com/sebbekarlsson/3dmodel-format-proposal","last_synced_at":"2025-06-13T20:39:27.502Z","repository":{"id":81577788,"uuid":"191319343","full_name":"sebbekarlsson/3dmodel-format-proposal","owner":"sebbekarlsson","description":"A proposal for a better 3D model format","archived":false,"fork":false,"pushed_at":"2019-06-11T07:39:23.000Z","size":1,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-25T20:46:36.314Z","etag":null,"topics":["3d","3d-model","blender","cad","file-format","modeling"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sebbekarlsson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2019-06-11T07:39:09.000Z","updated_at":"2019-06-11T07:40:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"ab66e3d0-9cae-4a40-ad83-e32d8fb57027","html_url":"https://github.com/sebbekarlsson/3dmodel-format-proposal","commit_stats":{"total_commits":1,"total_committers":1,"mean_commits":1.0,"dds":0.0,"last_synced_commit":"f2cb2062a7b3f12ef82d38cbbbcbdc68e3ca826c"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/sebbekarlsson/3dmodel-format-proposal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebbekarlsson%2F3dmodel-format-proposal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebbekarlsson%2F3dmodel-format-proposal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebbekarlsson%2F3dmodel-format-proposal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebbekarlsson%2F3dmodel-format-proposal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sebbekarlsson","download_url":"https://codeload.github.com/sebbekarlsson/3dmodel-format-proposal/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sebbekarlsson%2F3dmodel-format-proposal/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259718062,"owners_count":22901177,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3d","3d-model","blender","cad","file-format","modeling"],"created_at":"2025-01-30T18:05:46.220Z","updated_at":"2025-06-13T20:39:27.470Z","avatar_url":"https://github.com/sebbekarlsson.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# 3D model file format proposal\n\u003e This can be seen as a better version of\n\u003e the famous [Wavefront .obj format](https://en.wikipedia.org/wiki/Wavefront_.obj_file).  \n\u003e The advantages of this format is that it can be parsed a lot quicker, and it\n\u003e only includes the data that is actually interesting.\n\n## The format\n\u003e Here is my proposal:\n\n    vx  vy  vz  vnx vny vnz tx  ty \n\n    1.0 1.0 0.0 3.5 2.5 1.0 0.0 1.0\n    3.0 0.2 1.5 1.0 1.0 0.0 0.0 1.0\n    4.0 1.0 3.0 0.0 1.0 0.0 0.0 1.0\n    ...\n\n\u003e Here is a little description of all the values:  \n\u003e **vx**:   _This is the x position of the vertex._  \n\u003e **vy**:   _This is the y position of the vertex._  \n\u003e **vz**:   _This is the z position of the vertex._  \n\u003e **vnx**:  _This is the x vertex normal._  \n\u003e **vny**:  _This is the y vertex normal._  \n\u003e **vnz**:  _This is the z vertex normal._  \n\u003e **tx**:   _This is the x texture coordinate._  \n\u003e **ty**:   _This is the y texture coordinate._\n\n\u003e One might also want to include RGB values in this format, but one might\n\u003e also think that it is not very interesting, but here is how that would look:\n\n    vx  vy  vz  vnx vny vnz tx  ty  r   g   b\n\n    1.0 1.0 0.0 3.5 2.5 1.0 0.0 1.0 255 255 255\n    3.0 0.2 1.5 1.0 1.0 0.0 0.0 1.0 255 255 255\n    4.0 1.0 3.0 0.0 1.0 0.0 0.0 1.0 255 255 255\n    ...\n\n\u003e Now, of course; the first row in these examples would not be included, and\n\u003e this is how it actually would look like:\n\n    1.0 1.0 0.0 3.5 2.5 1.0 0.0 1.0 255 255 255\n    3.0 0.2 1.5 1.0 1.0 0.0 0.0 1.0 255 255 255\n    4.0 1.0 3.0 0.0 1.0 0.0 0.0 1.0 255 255 255\n    ... \n\n### One model per file\n\u003e This format also follows a \"one model per file\" philosophy, the\n\u003e _Wavefront .obj_ format does not do this, and it makes things confusing.\n\n### Materials\n\u003e For materials, we basically use the same syntax as in the `.obj` format, but\n\u003e _slightly different._  \n\n\u003e To reference a .mtl file we write it like this in the top of our file:\n\n    mtllib \"\u003cfilename\u003e\"\n\n\u003e The main difference here comparing to the `.obj` format, is that we use\n\u003e _quotes_ around the filename.\n\n\u003e To set the material for some faces we do it like this, right before we define\n\u003e faces:\n\n    usemtl \"\u003cmaterial name\u003e\"\n\n    1.0 1.0 0.0 3.5 2.5 1.0 0.0 1.0 255 255 255\n    3.0 0.2 1.5 1.0 1.0 0.0 0.0 1.0 255 255 255\n    4.0 1.0 3.0 0.0 1.0 0.0 0.0 1.0 255 255 255\n    ...  \n\n\u003e Again, here we use quotes around the material name.\n\n### Full example\n\u003e Here is a full example of how one of these files could look like:\n\n    mtllib \"materials.mtl\"\n\n    usemtl \"shiny\"\n    1.0 1.0 0.0 3.5 2.5 1.0 0.0 1.0 255 255 255\n    3.0 0.2 1.5 1.0 1.0 0.0 0.0 1.0 255 255 255\n    4.0 1.0 3.0 0.0 1.0 0.0 0.0 1.0 255 255 255\n    ...\n\n    usemtl \"matte\"\n    2.0 1.0 0.0 3.5 2.5 1.0 0.0 1.0 255 255 255\n    4.0 0.2 1.5 1.0 1.0 0.0 0.0 1.0 255 255 255\n    5.0 1.0 3.0 0.0 1.0 0.0 0.0 1.0 255 255 255\n    ...  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebbekarlsson%2F3dmodel-format-proposal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsebbekarlsson%2F3dmodel-format-proposal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsebbekarlsson%2F3dmodel-format-proposal/lists"}