Add reference screenshots for complex bundled test 3D model files (#5822)

Feature: Add reference screenshots for complex bundled test 3D model files

Co-authored-by: Steve M <praktique-tellypresence@yahoo.com>
Co-authored-by: Kim Kulling <kimkulling@users.noreply.github.com>
This commit is contained in:
Steve M
2024-11-08 07:09:00 -08:00
committed by GitHub
parent 9694f7e8e4
commit f7bb1bc170
91 changed files with 2871 additions and 0 deletions

View File

@@ -0,0 +1,10 @@
# AMF 3D model reference images
## 3_bananas.amf embedded texture
3_bananas.amf embeds a strange-looking texture, but believe when applied to the model it ends up
rendering correctly.
(Note that this is a relatively rare example of a 3D model with an "uncompressed" embedded texture,
may be useful for developers looking to test their assimp embedded texture implementations)
<img alt="3bananas_embedded_texture.png" src="screenshots%2F3bananas_embedded_texture.png" width=320 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 MiB

View File

@@ -0,0 +1,9 @@
# B3D 3D model reference images
## dwarf2.b3d
Note: there's a weird artifact in the animation when the character starts running
<img alt="dwarf2.b3d" src="screenshots/dwarf2_b3d.gif" width=180 />
## turtle1.b3d
<img alt="turtle1.b3d" src="screenshots/turtle1_b3d.gif" width=320 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 MiB

View File

@@ -0,0 +1,4 @@
# BLEND 3D model reference images
## fleurOptonl.blend
<img alt="fleurOptonl.blend" src="screenshots/fleurOptonl_blend.png" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 903 KiB

View File

@@ -0,0 +1,4 @@
# HMP 3D model reference images
## terrain_withtexture.hmp
<img alt="terrain_withtexture.hmp" src="screenshots/terrain_withtexture_hmp.png" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@@ -0,0 +1,4 @@
# LWS 3D model reference images
## QuickDraw v.2.2.lws
<img alt="QuickDraw v.2.2.lws" src="screenshots/quickdraw_v2_2_lws.gif" width=320 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 922 KiB

View File

@@ -0,0 +1,12 @@
# MD5 3D model reference images
## Bob.md5anim
Bones/skeleton-only animation visualization
<img alt="Bob.md5anim" src="screenshots/Bob_md5anim.gif" width=180 />
## Bob.md5mesh
Skinned, textured animated model
<img alt="Bob.md5mesh" src="screenshots/Bob_md5mesh.gif" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 MiB

View File

@@ -0,0 +1,4 @@
# IDPO 3D model reference images
## gijoe.mdl
<img alt="gijoe.mdl" src="screenshots/gijoe_mdl.png" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 571 KiB

View File

@@ -0,0 +1,9 @@
# OgreSDK 3D model reference images
## fish.mesh
<img alt="fish.mesh" src="screenshots/fish_mesh.gif" width=320 />
## ninja.mesh
Simple rigged/skinned model with about 20 animations
<img alt="ninja.mesh" src="screenshots/ninja_mesh.gif" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 MiB

View File

@@ -0,0 +1,14 @@
# X3D 3D model reference images
## ChevyTahoe.x3d
### Working (using IRR xml parser)
ChevyTahoe as of 29 Sep 2020 git commit `6a4c338`, using IRR xml parsing, renders OK:
<img alt="ChevyTahoe.x3d (irr_xml)" src="screenshots%2FChevyTahoe_x3d_irr_xml.png" width=320 />
### Broken (using pugi xml parser)
ChevyTahoe as of 1 Dec 2021 git commit `1614934`, using pugi xml parsing, renders with
missing meshes and obvious artifacts:
<img alt="ChevyTahoe.x3d (pugi_xml)" src="screenshots%2FChevyTahoe_x3d_pugi_xml.png" width=320 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 862 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 KiB

View File

@@ -0,0 +1,6 @@
# AC 3D model reference images
## sample_subdiv.ac
Note that there appear to be some small holes in the surface in a few places
<img alt="sample_subdiv.ac (as solid)" src="screenshots/sample_subdiv_ac_solid.png" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

View File

@@ -0,0 +1,18 @@
# ASE 3D model reference images
## MotionCaptureROM.ase
### Model is pure node animation of separate rigid meshes, no bones/mesh deformation
Note: this model has no bones/skeleton; the body is formed of separate rigid meshes
for each segment (e.g. upper arm, lower arm, upper leg, lower leg are all separate meshses)
and animation is entirely driven by changing node transformations over the animation timeline,
rather than deforming vertices via bones and associated weights.
### Artifacts
Animation has known artifacts, as stated in [MotionCaptureROM.source.txt](../MotionCaptureROM.source.txt):
```
NOTE: The errors in the middle of the animation are caused by problems during recording,
it's not an importer issue.
```
<img alt="MotionCaptureROM.ase" src="screenshots/MotionCaptureROM_ase.gif" width=320 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 MiB

View File

@@ -0,0 +1,16 @@
# BVH 3D model reference images
## 01_01.bvh
Three hops forward, turn around, three hops back, turn around, three hops forward
<img alt="01_01.bvh" src="screenshots/01_01_bvh.gif" width=180 />
## 01_03.bvh
Climb step ladder, hang on bar, climb step ladder, hang on bar
<img alt="01_03.bvh" src="screenshots/01_03_bvh.gif" width=320 />
## Boxing_Toes.bvh
Boxer warming up, throwing punches, getting hit, going to canvas
<img alt="Boxing_Toes.bvh" src="screenshots/Boxing_Toes_bvh.gif" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 MiB

View File

@@ -0,0 +1,6 @@
# Collada 3D model reference images
## human.zae
Compressed Collada file (.zae)
<img alt="human.zae" src="screenshots/human_zae.png" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 KiB

View File

@@ -0,0 +1,4 @@
# HMP 3D model reference images
## terrain.hmp
<img alt="terrain.hmp" src="screenshots/terrain_hmp.png" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 138 KiB

View File

@@ -0,0 +1,4 @@
# IQM 3D model reference images
## mrfixit.iqm
<img alt="mrfixit.iqm" src="screenshots/mrfixit_iqm.png" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

@@ -0,0 +1,14 @@
# IRR 3D model reference images
## scenegraphAnimMod_UTF16LE.irr
### Animation "AnimationSet0"
Dwarf animated; primitive objects not animated
<img alt="scenegraphAnimMod_UTF16LE.irr" src="screenshots/scenegraphAnimMod_UTF16LE_irr.gif" width=320 />
<img alt="scenegraphAnimMod_UTF16LE.irr" src="screenshots/scenegraphAnimMod_UTF16LE_irr_anim_AnimationSet0.gif" width=180 />
### Animation "Irr_GlobalAnimChannel"
Primitive objects animate; dwarf not animated (Animation playback sped up significantly)
<img alt="scenegraphAnimMod_UTF16LE.irr" src="screenshots/scenegraphAnimMod_UTF16LE_irr_anim_Irr_GlobalAnimChannel.gif" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

View File

@@ -0,0 +1,7 @@
# MD2 3D model reference images
## faerie.md2
<img alt="faerie.md2" src="screenshots/faerie_md2.png" width=180 />
## sydney.md2
<img alt="sydney.md2" src="screenshots/sydney_md2.png" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 834 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 KiB

View File

@@ -0,0 +1,7 @@
# TER 3D model reference images
## RealisticTerrain.ter
<img alt="RealisticTerrain.ter" src="screenshots/RealisticTerrain_ter.png" width=180 />
## RealisticTerrain_Large.ter
<img alt="RealisticTerrain_Large.ter" src="screenshots/RealisticTerrain_Large_ter.png" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 911 KiB

Binary file not shown.

View File

@@ -0,0 +1,8 @@
# USD model files
## MotionCaptureROM.usdc
Converted bundled .wrl test model:
https://github.com/assimp/assimp/blob/master/test/models/WRL/MotionCaptureROM.WRL
to .usdc format via website:
https://imagetostl.com/convert/file/wrl/to/usd#convert
(As of Oct 2024, animations have not been verified as present or correct)

View File

@@ -0,0 +1,4 @@
# USD 3D model reference images
## MotionCaptureROM.usdc
<img alt="MotionCaptureROM.usdc" src="screenshots/MotionCaptureROM_usdc.png" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

View File

@@ -0,0 +1,7 @@
# X 3D model reference images
## BCN_Epileptic.X
<img alt="BCN_Epileptic.X" src="screenshots/BCN_Epileptic_X.gif" width=180 />
## Testwuson.X playing animation "Wuson_Run"
<img alt="Testwuson.X" src="screenshots/Testwuson_X_anim_Wuson_Run.gif" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

View File

@@ -0,0 +1,14 @@
# X3D 3D model reference images
## ComputerKeyboard.x3d
### Working (using IRR xml parser)
ComputerKeyboard as of 29 Sep 2020 git commit `6a4c338`, using IRR xml parsing, renders OK:
<img alt="ComputerKeyboard.x3d (IRR xml)" src="screenshots/ComputerKeyboard_x3d_irr_xml.png" width=320 />
### Broken (using pugi xml parser)
ComputerKeyboard as of 1 Dec 2021 git commit `1614934`, using pugi xml parsing, renders with
missing meshes and obvious artifacts:
<img alt="ComputerKeyboard.x3d (pugi xml)" src="screenshots/ComputerKeyboard_x3d_pugi_xml.png" width=320 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 837 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB

View File

@@ -0,0 +1,15 @@
# LICENSE file for the model: Animated Morph Cube
All files in this directory tree are licensed as indicated below.
* All files directly associated with the model including all text, image and binary files:
* [CC0 1.0 Universal]("https://creativecommons.org/publicdomain/zero/1.0/legalcode") [SPDX license identifier: "CC0-1.0"]
* This file and all other metadocumentation files including "metadata.json":
* [Creative Commons Attribtution 4.0 International]("https://creativecommons.org/licenses/by/4.0/legalcode") [SPDX license identifier: "CC-BY-4.0"]
Full license text of these licenses are available at the links above
#### Generated by modelmetadata

View File

@@ -0,0 +1,12 @@
## Screenshot
![screenshot](screenshot/screenshot.gif)
## Description
The cube contains two morph targets in it:
* **`thin`** : moves the vertices so that it becomes super-thin
* **`angle`** : moves the vertices so that it forms a ramp
The animation loops, morphing between these two states.

View File

@@ -0,0 +1,36 @@
# Animated Morph Cube
## Tags
[core](../../Models-core.md), [testing](../../Models-testing.md)
## Summary
Demonstrates a simple cube with two simple morph targets and an animation that transitions between them both.
## Operations
* [Display](https://github.khronos.org/glTF-Sample-Viewer-Release/?model=https://raw.GithubUserContent.com/KhronosGroup/glTF-Sample-Assets/main/./Models/AnimatedMorphCube/glTF-Binary/AnimatedMorphCube.glb) in SampleViewer
* [Download GLB](https://raw.GithubUserContent.com/KhronosGroup/glTF-Sample-Assets/main/./Models/AnimatedMorphCube/glTF-Binary/AnimatedMorphCube.glb)
* [Model Directory](./)
## Screenshot
![screenshot](screenshot/screenshot.gif)
## Description
The cube contains two morph targets in it:
* **`thin`** : moves the vertices so that it becomes super-thin
* **`angle`** : moves the vertices so that it forms a ramp
The animation loops, morphing between these two states.
## Legal
&copy; 2017, Public. [CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/legalcode)
- Microsoft for Everything
#### Assembled by modelmetadata

View File

@@ -0,0 +1,282 @@
{
"accessors": [
{
"bufferView": 0,
"componentType": 5126,
"count": 24,
"type": "VEC3"
},
{
"bufferView": 1,
"componentType": 5126,
"count": 24,
"type": "VEC4"
},
{
"bufferView": 2,
"componentType": 5126,
"count": 24,
"type": "VEC3",
"max": [
0.0100000035,
0.0100000035,
0.01
],
"min": [
-0.0100000044,
-0.0100000054,
-0.01
]
},
{
"bufferView": 3,
"componentType": 5126,
"count": 24,
"type": "VEC3",
"name": "thin"
},
{
"bufferView": 4,
"componentType": 5126,
"count": 24,
"type": "VEC3",
"max": [
0.0,
0.01893253,
0.0
],
"min": [
0.0,
0.0,
0.0
],
"name": "thin"
},
{
"bufferView": 5,
"componentType": 5126,
"count": 24,
"type": "VEC3",
"name": "thin"
},
{
"bufferView": 6,
"componentType": 5126,
"count": 24,
"type": "VEC3",
"name": "angle"
},
{
"bufferView": 7,
"componentType": 5126,
"count": 24,
"type": "VEC3",
"max": [
0.0,
0.0198908355,
0.0
],
"min": [
0.0,
0.0,
0.0
],
"name": "angle"
},
{
"bufferView": 8,
"componentType": 5126,
"count": 24,
"type": "VEC3",
"name": "angle"
},
{
"bufferView": 9,
"componentType": 5123,
"count": 36,
"type": "SCALAR"
},
{
"bufferView": 10,
"componentType": 5126,
"count": 127,
"type": "SCALAR",
"max": [
4.19999743
],
"min": [
0.0
]
},
{
"bufferView": 11,
"componentType": 5126,
"count": 254,
"type": "SCALAR"
}
],
"animations": [
{
"channels": [
{
"sampler": 0,
"target": {
"node": 0,
"path": "weights"
}
}
],
"samplers": [
{
"input": 10,
"interpolation": "LINEAR",
"output": 11
}
],
"name": "Square"
}
],
"asset": {
"generator": "glTF Tools for Unity",
"version": "2.0"
},
"bufferViews": [
{
"buffer": 0,
"byteLength": 288
},
{
"buffer": 0,
"byteOffset": 288,
"byteLength": 384
},
{
"buffer": 0,
"byteOffset": 672,
"byteLength": 288
},
{
"buffer": 0,
"byteOffset": 960,
"byteLength": 288
},
{
"buffer": 0,
"byteOffset": 1248,
"byteLength": 288
},
{
"buffer": 0,
"byteOffset": 1536,
"byteLength": 288
},
{
"buffer": 0,
"byteOffset": 1824,
"byteLength": 288
},
{
"buffer": 0,
"byteOffset": 2112,
"byteLength": 288
},
{
"buffer": 0,
"byteOffset": 2400,
"byteLength": 288
},
{
"buffer": 0,
"byteOffset": 2688,
"byteLength": 72
},
{
"buffer": 0,
"byteOffset": 2760,
"byteLength": 508
},
{
"buffer": 0,
"byteOffset": 3268,
"byteLength": 1016
}
],
"buffers": [
{
"uri": "AnimatedMorphCube.bin",
"byteLength": 4284
}
],
"meshes": [
{
"primitives": [
{
"attributes": {
"NORMAL": 0,
"TANGENT": 1,
"POSITION": 2
},
"indices": 9,
"material": 0,
"targets": [
{
"NORMAL": 3,
"POSITION": 4,
"TANGENT": 5
},
{
"NORMAL": 6,
"POSITION": 7,
"TANGENT": 8
}
]
}
],
"weights": [
0.0,
0.0
],
"name": "Cube"
}
],
"materials": [
{
"pbrMetallicRoughness": {
"baseColorFactor": [
0.6038274,
0.6038274,
0.6038274,
1.0
],
"metallicFactor": 0.0,
"roughnessFactor": 0.5
},
"name": "Material"
}
],
"nodes": [
{
"mesh": 0,
"rotation": [
0.0,
0.7071067,
-0.7071068,
0.0
],
"scale": [
100.0,
100.0,
100.0
],
"name": "AnimatedMorphCube"
}
],
"scene": 0,
"scenes": [
{
"nodes": [
0
]
}
]
}

View File

@@ -0,0 +1,20 @@
# Animated Morph Sphere
## Screenshot
![screenshot](screenshot/screenshot.gif)
## Description
The sphere contains two morph targets in it:
* **`blob`** : moves the vertices so that it becomes a somewhat amorphous fat, blob shape.
* **`ship`** : moves the vertices so that it looks a bit like a spaceship, the goal being
to just make it a much more complicated morph example than the [cube](../AnimatedMorphCube/README.md).
The animation loops, morphing between these two states.
## License Information
[![CC0](http://i.creativecommons.org/p/zero/1.0/88x31.png)](http://creativecommons.org/publicdomain/zero/1.0/)
To the extent possible under law, Microsoft has waived all copyright and related or neighboring rights to this asset.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,276 @@
{
"accessors": [
{
"bufferView": 0,
"componentType": 5126,
"count": 1876,
"type": "VEC3"
},
{
"bufferView": 1,
"componentType": 5126,
"count": 1876,
"type": "VEC4"
},
{
"bufferView": 2,
"componentType": 5126,
"count": 1876,
"type": "VEC3",
"max": [
0.009999998,
0.009999991,
0.01
],
"min": [
-0.0100000026,
-0.0100000035,
-0.01
]
},
{
"bufferView": 3,
"componentType": 5126,
"count": 1876,
"type": "VEC3",
"name": "Ship"
},
{
"bufferView": 4,
"componentType": 5126,
"count": 1876,
"type": "VEC3",
"max": [
0.0313265175,
0.0226246975,
0.008465132
],
"min": [
-0.0313265137,
-0.022857653,
0.0
],
"name": "Ship"
},
{
"bufferView": 5,
"componentType": 5126,
"count": 1876,
"type": "VEC3",
"name": "Ship"
},
{
"bufferView": 6,
"componentType": 5126,
"count": 1876,
"type": "VEC3",
"name": "Blob"
},
{
"bufferView": 7,
"componentType": 5126,
"count": 1876,
"type": "VEC3",
"max": [
0.008781092,
0.0,
0.0
],
"min": [
-0.008781091,
-0.0007655843,
0.0
],
"name": "Blob"
},
{
"bufferView": 8,
"componentType": 5126,
"count": 1876,
"type": "VEC3",
"name": "Blob"
},
{
"bufferView": 9,
"componentType": 5123,
"count": 2880,
"type": "SCALAR"
},
{
"bufferView": 10,
"componentType": 5126,
"count": 217,
"type": "SCALAR",
"max": [
7.19999456
],
"min": [
0.0
]
},
{
"bufferView": 11,
"componentType": 5126,
"count": 434,
"type": "SCALAR"
}
],
"animations": [
{
"channels": [
{
"sampler": 0,
"target": {
"node": 0,
"path": "weights"
}
}
],
"samplers": [
{
"input": 10,
"interpolation": "LINEAR",
"output": 11
}
],
"name": "Globe"
}
],
"asset": {
"generator": "glTF Tools for Unity",
"version": "2.0"
},
"bufferViews": [
{
"buffer": 0,
"byteLength": 22512
},
{
"buffer": 0,
"byteOffset": 22512,
"byteLength": 30016
},
{
"buffer": 0,
"byteOffset": 52528,
"byteLength": 22512
},
{
"buffer": 0,
"byteOffset": 75040,
"byteLength": 22512
},
{
"buffer": 0,
"byteOffset": 97552,
"byteLength": 22512
},
{
"buffer": 0,
"byteOffset": 120064,
"byteLength": 22512
},
{
"buffer": 0,
"byteOffset": 142576,
"byteLength": 22512
},
{
"buffer": 0,
"byteOffset": 165088,
"byteLength": 22512
},
{
"buffer": 0,
"byteOffset": 187600,
"byteLength": 22512
},
{
"buffer": 0,
"byteOffset": 210112,
"byteLength": 5760
},
{
"buffer": 0,
"byteOffset": 215872,
"byteLength": 868
},
{
"buffer": 0,
"byteOffset": 216740,
"byteLength": 1736
}
],
"buffers": [
{
"uri": "AnimatedMorphSphere.bin",
"byteLength": 218476
}
],
"meshes": [
{
"primitives": [
{
"attributes": {
"NORMAL": 0,
"TANGENT": 1,
"POSITION": 2
},
"indices": 9,
"material": 0,
"targets": [
{
"NORMAL": 3,
"POSITION": 4,
"TANGENT": 5
},
{
"NORMAL": 6,
"POSITION": 7,
"TANGENT": 8
}
]
}
],
"weights": [
0.0,
0.0
],
"name": "Sphere"
}
],
"materials": [
{
"pbrMetallicRoughness": {
"metallicFactor": 0.0,
"roughnessFactor": 0.5
},
"name": "No Name"
}
],
"nodes": [
{
"mesh": 0,
"rotation": [
0.0,
0.7071067,
-0.7071068,
0.0
],
"scale": [
100.0,
100.0,
100.0
],
"name": "AnimatedMorphSphere"
}
],
"scene": 0,
"scenes": [
{
"nodes": [
0
]
}
]
}

View File

@@ -0,0 +1,17 @@
# LICENSE file for the model: Morph-Primitives Test
All files in this directory tree are licensed as indicated below.
* All files directly associated with the model including all text, image and binary files:
* [CC BY 4.0 International]("https://creativecommons.org/licenses/by/4.0/legalcode") [SPDX license identifier: "CC-BY-4.0"]
* [CC BY 4.0 International]("https://creativecommons.org/licenses/by/4.0/legalcode") [SPDX license identifier: "CC-BY-4.0"]
* This file and all other metadocumentation files including "metadata.json":
* [Creative Commons Attribtution 4.0 International]("https://creativecommons.org/licenses/by/4.0/legalcode") [SPDX license identifier: "CC-BY-4.0"]
Full license text of these licenses are available at the links above
#### Generated by modelmetadata

View File

@@ -0,0 +1,21 @@
## Screenshot
![screenshot](screenshot/screenshot.jpg)
## Description
This model contains a simple mesh with two primitives: A larger red primitive displays a grid covering 3 of the 4 quadrants of the model's area, followed by a smaller green primitive covering the last quadrant.
Each primitive has a morph target that creates an elevated area within these quadrants. The model's only mesh contains a `weights: [0.5]` instruction that should cause these morph targets to be applied at half strength, raising the center of the model as shown in the screenshot above.
## Common Problems
If the entire model appears perfectly flat, it is likely that the morph targets have not been applied as requested.
If the red area or green area is missing, particularly in the Draco-compressed version of this model, it could indicate a problem with decompression or with support of multiple primitives within a single mesh.
## Author
Model by [@ft-lab](https://github.com/ft-lab).

View File

@@ -0,0 +1,50 @@
# Morph-Primitives Test
## Tags
[core](../../Models-core.md), [testing](../../Models-testing.md)
## Summary
Tests a morph target on multiple primitives.
## Operations
* [Display](https://github.khronos.org/glTF-Sample-Viewer-Release/?model=https://raw.GithubUserContent.com/KhronosGroup/glTF-Sample-Assets/main/./Models/MorphPrimitivesTest/glTF-Binary/MorphPrimitivesTest.glb) in SampleViewer
* [Download GLB](https://raw.GithubUserContent.com/KhronosGroup/glTF-Sample-Assets/main/./Models/MorphPrimitivesTest/glTF-Binary/MorphPrimitivesTest.glb)
* [Model Directory](./)
## Screenshot
![screenshot](screenshot/screenshot.jpg)
## Description
This model contains a simple mesh with two primitives: A larger red primitive displays a grid covering 3 of the 4 quadrants of the model's area, followed by a smaller green primitive covering the last quadrant.
Each primitive has a morph target that creates an elevated area within these quadrants. The model's only mesh contains a `weights: [0.5]` instruction that should cause these morph targets to be applied at half strength, raising the center of the model as shown in the screenshot above.
## Common Problems
If the entire model appears perfectly flat, it is likely that the morph targets have not been applied as requested.
If the red area or green area is missing, particularly in the Draco-compressed version of this model, it could indicate a problem with decompression or with support of multiple primitives within a single mesh.
## Author
Model by [@ft-lab](https://github.com/ft-lab).
## Legal
&copy; 2018, ft-lab. [CC BY 4.0 International](https://creativecommons.org/licenses/by/4.0/legalcode)
- ft-lab for Everything
&copy; 2020, Frank Galligan. [CC BY 4.0 International](https://creativecommons.org/licenses/by/4.0/legalcode)
- Frank Galligan for DRACO compression
#### Assembled by modelmetadata

View File

@@ -0,0 +1,331 @@
{
"asset": {
"generator": "glTF Converter for Shade3D",
"version": "2.0",
"extras": {
"title": "multiple_primitives",
"author": "ft-lab",
"license": "CC BY-4.0 (https://creativecommons.org/licenses/by/4.0/)"
}
},
"accessors": [
{
"bufferView": 0,
"componentType": 5123,
"count": 72,
"type": "SCALAR",
"byteOffset": 0
},
{
"bufferView": 1,
"componentType": 5126,
"count": 21,
"type": "VEC3",
"byteOffset": 0
},
{
"bufferView": 2,
"componentType": 5126,
"count": 21,
"type": "VEC3",
"max": [
0.5,
0,
0.5
],
"min": [
-0.5,
0,
-0.5
],
"byteOffset": 0
},
{
"bufferView": 3,
"componentType": 5126,
"count": 21,
"type": "VEC2",
"byteOffset": 0
},
{
"bufferView": 4,
"componentType": 5126,
"count": 21,
"type": "VEC3",
"max": [
0,
0.20000000298023224,
0
],
"min": [
0,
0,
0
],
"byteOffset": 0
},
{
"bufferView": 5,
"componentType": 5123,
"count": 24,
"type": "SCALAR",
"byteOffset": 0
},
{
"bufferView": 6,
"componentType": 5126,
"count": 9,
"type": "VEC3",
"byteOffset": 0
},
{
"bufferView": 7,
"componentType": 5126,
"count": 9,
"type": "VEC3",
"max": [
0.5,
0,
0
],
"min": [
0,
0,
-0.5
],
"byteOffset": 0
},
{
"bufferView": 8,
"componentType": 5126,
"count": 9,
"type": "VEC2",
"byteOffset": 0
},
{
"bufferView": 9,
"componentType": 5126,
"count": 9,
"type": "VEC3",
"max": [
0,
0.20000000298023224,
0
],
"min": [
0,
0,
0
],
"byteOffset": 0
}
],
"bufferViews": [
{
"buffer": 0,
"byteOffset": 0,
"byteLength": 144,
"target": 34963
},
{
"buffer": 0,
"byteOffset": 144,
"byteLength": 252,
"target": 34962,
"byteStride": 12
},
{
"buffer": 0,
"byteOffset": 396,
"byteLength": 252,
"target": 34962,
"byteStride": 12
},
{
"buffer": 0,
"byteOffset": 648,
"byteLength": 168,
"target": 34962,
"byteStride": 8
},
{
"buffer": 0,
"byteOffset": 816,
"byteLength": 252,
"target": 34962,
"byteStride": 12
},
{
"buffer": 0,
"byteOffset": 1068,
"byteLength": 48,
"target": 34963
},
{
"buffer": 0,
"byteOffset": 1116,
"byteLength": 108,
"target": 34962,
"byteStride": 12
},
{
"buffer": 0,
"byteOffset": 1224,
"byteLength": 108,
"target": 34962,
"byteStride": 12
},
{
"buffer": 0,
"byteOffset": 1332,
"byteLength": 72,
"target": 34962,
"byteStride": 8
},
{
"buffer": 0,
"byteOffset": 1404,
"byteLength": 108,
"target": 34962,
"byteStride": 12
}
],
"buffers": [
{
"name": "MorphPrimitivesTest",
"byteLength": 1512,
"uri": "MorphPrimitivesTest.bin"
}
],
"images": [
{
"name": "uv_texture.jpg",
"mimeType": "image/jpeg",
"uri": "uv_texture.jpg"
}
],
"materials": [
{
"pbrMetallicRoughness": {
"baseColorFactor": [
1,
0,
0,
1
],
"baseColorTexture": {
"index": 0,
"texCoord": 0
},
"metallicFactor": 0,
"roughnessFactor": 1
},
"name": "red",
"emissiveFactor": [
0,
0,
0
],
"alphaMode": "OPAQUE",
"doubleSided": false
},
{
"pbrMetallicRoughness": {
"baseColorFactor": [
0,
1,
0,
1
],
"baseColorTexture": {
"index": 0,
"texCoord": 0
},
"metallicFactor": 0,
"roughnessFactor": 1
},
"name": "green",
"emissiveFactor": [
0,
0,
0
],
"alphaMode": "OPAQUE",
"doubleSided": false
}
],
"meshes": [
{
"weights": [
0.5
],
"name": "mesh",
"primitives": [
{
"attributes": {
"NORMAL": 1,
"POSITION": 2,
"TEXCOORD_0": 3
},
"indices": 0,
"material": 0,
"targets": [
{
"POSITION": 4
}
],
"mode": 4
},
{
"attributes": {
"POSITION": 7,
"NORMAL": 6,
"TEXCOORD_0": 8
},
"indices": 5,
"material": 1,
"targets": [
{
"POSITION": 9
}
],
"mode": 4
}
]
}
],
"nodes": [
{
"children": [
1
],
"name": "ルートパート"
},
{
"mesh": 0,
"name": "mesh"
}
],
"samplers": [
{
"minFilter": 9729,
"wrapS": 10497,
"wrapT": 10497
}
],
"scenes": [
{
"nodes": [
0
],
"name": "Scene"
}
],
"textures": [
{
"sampler": 0,
"source": 0
}
],
"scene": 0
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@@ -0,0 +1,15 @@
# LICENSE file for the model: Morph Stress Test
All files in this directory tree are licensed as indicated below.
* All files directly associated with the model including all text, image and binary files:
* [CC BY 4.0 International]("https://creativecommons.org/licenses/by/4.0/legalcode") [SPDX license identifier: "CC-BY-4.0"]
* This file and all other metadocumentation files including "metadata.json":
* [Creative Commons Attribtution 4.0 International]("https://creativecommons.org/licenses/by/4.0/legalcode") [SPDX license identifier: "CC-BY-4.0"]
Full license text of these licenses are available at the links above
#### Generated by modelmetadata

View File

@@ -0,0 +1,62 @@
## Screenshot
![screenshot](screenshot/screenshot_large.png)
## Description
This model has a base mesh, plus eight morph targets. The base and each of the morph targets has
both a POSITION and a NORMAL accessor, resulting in no less than 18 vertex attributes being requested
by a typical implementation. This number can be too high for many realtime graphics systems, and
the client runtime may take steps to limit the overall number of morph targets and/or limit the
number of active morph targets.
As such, this model is not expected to render correctly everywhere. Instead, it pushes the limits
to see how many morph targets can move at once before problems become apparent.
## Animations
Three animations are included:
---
### "Individuals"
![Individuals animation](screenshot/Anim_Individuals.gif)
Each morph target is exercised one at a time, and returns to zero strength before the next one
starts to move. This offers runtimes the best chance of success, as vertex attributes need only
be allocated for one morph target at a time. Even so, systems that pre-allocate morph target
attributes may place an upper limit here, allowing only some of the test blocks to move.
---
### "TheWave"
![Wave animation](screenshot/Anim_TheWave.gif)
This animation tests a wave of morph targets being activated simultaneously. This does require
a high number of vertex attributes to be available. If glitches in movement are observed,
continue on to the "Pulse" animation for closer inspection.
---
### "Pulse"
![Pulse animation](screenshot/Anim_Pulse.gif)
This is the most stressful test, with all 8 morph targets reaching full strength before any
begin to subside. Some runtimes may place limits on how many morph targets can be active at
once, resulting in a distinctive visual pattern here: Only the first N test blocks will
appear to move, where N is the number of simultaneous active morph targets allowed. Test
blocks on the right will remain frozen in the starting position until the first few blocks
on the left have returned to rest. After the blocks on the left have returned to rest, they
could relinquish their vertex attributes to blocks on the right, allowing those blocks to
"catch up" to their assigned positions in the animation.
It is also possible that there could be a hard limit on the number of morph targets, regardless
of whether they are active or not. In this case, only the first N blocks will move at all,
and the remainder will be frozen the entire time.
---
## Implementation Notes
BabylonJS has shared some technical details of their "Infinite Morph Targets" implementation
in [this YouTube video](https://www.youtube.com/watch?v=LBPRmGgU0PE).

View File

@@ -0,0 +1,87 @@
# Morph Stress Test
## Tags
[core](../../Models-core.md), [testing](../../Models-testing.md)
## Summary
Tests up to 8 morph targets.
## Operations
* [Display](https://github.khronos.org/glTF-Sample-Viewer-Release/?model=https://raw.GithubUserContent.com/KhronosGroup/glTF-Sample-Assets/main/./Models/MorphStressTest/glTF-Binary/MorphStressTest.glb) in SampleViewer
* [Download GLB](https://raw.GithubUserContent.com/KhronosGroup/glTF-Sample-Assets/main/./Models/MorphStressTest/glTF-Binary/MorphStressTest.glb)
* [Model Directory](./)
## Screenshot
![screenshot](screenshot/screenshot_large.png)
## Description
This model has a base mesh, plus eight morph targets. The base and each of the morph targets has
both a POSITION and a NORMAL accessor, resulting in no less than 18 vertex attributes being requested
by a typical implementation. This number can be too high for many realtime graphics systems, and
the client runtime may take steps to limit the overall number of morph targets and/or limit the
number of active morph targets.
As such, this model is not expected to render correctly everywhere. Instead, it pushes the limits
to see how many morph targets can move at once before problems become apparent.
## Animations
Three animations are included:
---
### "Individuals"
![Individuals animation](screenshot/Anim_Individuals.gif)
Each morph target is exercised one at a time, and returns to zero strength before the next one
starts to move. This offers runtimes the best chance of success, as vertex attributes need only
be allocated for one morph target at a time. Even so, systems that pre-allocate morph target
attributes may place an upper limit here, allowing only some of the test blocks to move.
---
### "TheWave"
![Wave animation](screenshot/Anim_TheWave.gif)
This animation tests a wave of morph targets being activated simultaneously. This does require
a high number of vertex attributes to be available. If glitches in movement are observed,
continue on to the "Pulse" animation for closer inspection.
---
### "Pulse"
![Pulse animation](screenshot/Anim_Pulse.gif)
This is the most stressful test, with all 8 morph targets reaching full strength before any
begin to subside. Some runtimes may place limits on how many morph targets can be active at
once, resulting in a distinctive visual pattern here: Only the first N test blocks will
appear to move, where N is the number of simultaneous active morph targets allowed. Test
blocks on the right will remain frozen in the starting position until the first few blocks
on the left have returned to rest. After the blocks on the left have returned to rest, they
could relinquish their vertex attributes to blocks on the right, allowing those blocks to
"catch up" to their assigned positions in the animation.
It is also possible that there could be a hard limit on the number of morph targets, regardless
of whether they are active or not. In this case, only the first N blocks will move at all,
and the remainder will be frozen the entire time.
---
## Implementation Notes
BabylonJS has shared some technical details of their "Infinite Morph Targets" implementation
in [this YouTube video](https://www.youtube.com/watch?v=LBPRmGgU0PE).
## Legal
&copy; 2021, Analytical Graphics, Inc.. [CC BY 4.0 International](https://creativecommons.org/licenses/by/4.0/legalcode)
- Ed Mackey for Everything
#### Assembled by modelmetadata

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

View File

@@ -0,0 +1,999 @@
{
"asset" : {
"copyright" : "CC-BY 4.0 Copyright 2021 Analytical Graphics, Inc. Model and Textures by Ed Mackey.",
"generator" : "Khronos glTF Blender I/O v1.5.13",
"version" : "2.0"
},
"scene" : 0,
"scenes" : [
{
"name" : "Scene",
"nodes" : [
0
]
}
],
"nodes" : [
{
"mesh" : 0,
"name" : "Main"
}
],
"animations" : [
{
"channels" : [
{
"sampler" : 0,
"target" : {
"node" : 0,
"path" : "weights"
}
}
],
"name" : "Individuals",
"samplers" : [
{
"input" : 42,
"interpolation" : "LINEAR",
"output" : 43
}
]
},
{
"channels" : [
{
"sampler" : 0,
"target" : {
"node" : 0,
"path" : "weights"
}
}
],
"name" : "TheWave",
"samplers" : [
{
"input" : 44,
"interpolation" : "LINEAR",
"output" : 45
}
]
},
{
"channels" : [
{
"sampler" : 0,
"target" : {
"node" : 0,
"path" : "weights"
}
}
],
"name" : "Pulse",
"samplers" : [
{
"input" : 46,
"interpolation" : "LINEAR",
"output" : 47
}
]
}
],
"materials" : [
{
"doubleSided" : true,
"name" : "Base",
"occlusionTexture" : {
"index" : 0,
"texCoord" : 1
},
"pbrMetallicRoughness" : {
"baseColorTexture" : {
"index" : 1
},
"metallicFactor" : 0,
"roughnessFactor" : 0.4000000059604645
}
},
{
"doubleSided" : true,
"name" : "TestMaterial",
"pbrMetallicRoughness" : {
"baseColorTexture" : {
"index" : 2
},
"metallicFactor" : 0,
"roughnessFactor" : 0.5
}
}
],
"meshes" : [
{
"extras" : {
"targetNames" : [
"Key 1",
"Key 2",
"Key 3",
"Key 4",
"Key 5",
"Key 6",
"Key 7",
"Key 8"
]
},
"name" : "Cube",
"primitives" : [
{
"attributes" : {
"POSITION" : 0,
"NORMAL" : 1,
"TEXCOORD_0" : 2,
"TEXCOORD_1" : 3
},
"indices" : 4,
"material" : 0,
"targets" : [
{
"POSITION" : 5,
"NORMAL" : 6
},
{
"POSITION" : 7,
"NORMAL" : 8
},
{
"POSITION" : 9,
"NORMAL" : 10
},
{
"POSITION" : 11,
"NORMAL" : 12
},
{
"POSITION" : 13,
"NORMAL" : 14
},
{
"POSITION" : 15,
"NORMAL" : 16
},
{
"POSITION" : 17,
"NORMAL" : 18
},
{
"POSITION" : 19,
"NORMAL" : 20
}
]
},
{
"attributes" : {
"POSITION" : 21,
"NORMAL" : 22,
"TEXCOORD_0" : 23,
"TEXCOORD_1" : 24
},
"indices" : 25,
"material" : 1,
"targets" : [
{
"POSITION" : 26,
"NORMAL" : 27
},
{
"POSITION" : 28,
"NORMAL" : 29
},
{
"POSITION" : 30,
"NORMAL" : 31
},
{
"POSITION" : 32,
"NORMAL" : 33
},
{
"POSITION" : 34,
"NORMAL" : 35
},
{
"POSITION" : 36,
"NORMAL" : 37
},
{
"POSITION" : 38,
"NORMAL" : 39
},
{
"POSITION" : 40,
"NORMAL" : 41
}
]
}
],
"weights" : [
0,
0,
0,
0,
0,
0,
0,
0
]
}
],
"textures" : [
{
"sampler" : 0,
"source" : 0
},
{
"sampler" : 0,
"source" : 1
},
{
"sampler" : 0,
"source" : 2
}
],
"images" : [
{
"mimeType" : "image/png",
"name" : "Base_AO",
"uri" : "Base_AO.png"
},
{
"mimeType" : "image/png",
"name" : "TinyGrid",
"uri" : "TinyGrid.png"
},
{
"mimeType" : "image/png",
"name" : "ColorSwatches",
"uri" : "ColorSwatches.png"
}
],
"accessors" : [
{
"bufferView" : 0,
"componentType" : 5126,
"count" : 24,
"max" : [
2,
0,
0.5
],
"min" : [
-2,
-0.10000002384185791,
-0.5
],
"type" : "VEC3"
},
{
"bufferView" : 1,
"componentType" : 5126,
"count" : 24,
"type" : "VEC3"
},
{
"bufferView" : 2,
"componentType" : 5126,
"count" : 24,
"type" : "VEC2"
},
{
"bufferView" : 3,
"componentType" : 5126,
"count" : 24,
"type" : "VEC2"
},
{
"bufferView" : 4,
"componentType" : 5123,
"count" : 36,
"type" : "SCALAR"
},
{
"bufferView" : 5,
"componentType" : 5126,
"count" : 24,
"max" : [
0,
0,
0
],
"min" : [
0,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 6,
"componentType" : 5126,
"count" : 24,
"type" : "VEC3"
},
{
"bufferView" : 7,
"componentType" : 5126,
"count" : 24,
"max" : [
0,
0,
0
],
"min" : [
0,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 8,
"componentType" : 5126,
"count" : 24,
"type" : "VEC3"
},
{
"bufferView" : 9,
"componentType" : 5126,
"count" : 24,
"max" : [
0,
0,
0
],
"min" : [
0,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 10,
"componentType" : 5126,
"count" : 24,
"type" : "VEC3"
},
{
"bufferView" : 11,
"componentType" : 5126,
"count" : 24,
"max" : [
0,
0,
0
],
"min" : [
0,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 12,
"componentType" : 5126,
"count" : 24,
"type" : "VEC3"
},
{
"bufferView" : 13,
"componentType" : 5126,
"count" : 24,
"max" : [
0,
0,
0
],
"min" : [
0,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 14,
"componentType" : 5126,
"count" : 24,
"type" : "VEC3"
},
{
"bufferView" : 15,
"componentType" : 5126,
"count" : 24,
"max" : [
0,
0,
0
],
"min" : [
0,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 16,
"componentType" : 5126,
"count" : 24,
"type" : "VEC3"
},
{
"bufferView" : 17,
"componentType" : 5126,
"count" : 24,
"max" : [
0,
0,
0
],
"min" : [
0,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 18,
"componentType" : 5126,
"count" : 24,
"type" : "VEC3"
},
{
"bufferView" : 19,
"componentType" : 5126,
"count" : 24,
"max" : [
0,
0,
0
],
"min" : [
0,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 20,
"componentType" : 5126,
"count" : 24,
"type" : "VEC3"
},
{
"bufferView" : 21,
"componentType" : 5126,
"count" : 1504,
"max" : [
1.875,
0.5,
0.25
],
"min" : [
-1.875,
0,
-0.25
],
"type" : "VEC3"
},
{
"bufferView" : 22,
"componentType" : 5126,
"count" : 1504,
"type" : "VEC3"
},
{
"bufferView" : 23,
"componentType" : 5126,
"count" : 1504,
"type" : "VEC2"
},
{
"bufferView" : 24,
"componentType" : 5126,
"count" : 1504,
"type" : "VEC2"
},
{
"bufferView" : 25,
"componentType" : 5123,
"count" : 7200,
"type" : "SCALAR"
},
{
"bufferView" : 26,
"componentType" : 5126,
"count" : 1504,
"max" : [
0.04999995231628418,
1,
0
],
"min" : [
-0.04999995231628418,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 27,
"componentType" : 5126,
"count" : 1504,
"type" : "VEC3"
},
{
"bufferView" : 28,
"componentType" : 5126,
"count" : 1504,
"max" : [
0.04999995231628418,
1,
0
],
"min" : [
-0.04999995231628418,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 29,
"componentType" : 5126,
"count" : 1504,
"type" : "VEC3"
},
{
"bufferView" : 30,
"componentType" : 5126,
"count" : 1504,
"max" : [
0.050000011920928955,
1,
0
],
"min" : [
-0.050000011920928955,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 31,
"componentType" : 5126,
"count" : 1504,
"type" : "VEC3"
},
{
"bufferView" : 32,
"componentType" : 5126,
"count" : 1504,
"max" : [
0.050000011920928955,
1,
0
],
"min" : [
-0.04999999701976776,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 33,
"componentType" : 5126,
"count" : 1504,
"type" : "VEC3"
},
{
"bufferView" : 34,
"componentType" : 5126,
"count" : 1504,
"max" : [
0.04999999701976776,
1,
0
],
"min" : [
-0.050000011920928955,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 35,
"componentType" : 5126,
"count" : 1504,
"type" : "VEC3"
},
{
"bufferView" : 36,
"componentType" : 5126,
"count" : 1504,
"max" : [
0.050000011920928955,
1,
0
],
"min" : [
-0.050000011920928955,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 37,
"componentType" : 5126,
"count" : 1504,
"type" : "VEC3"
},
{
"bufferView" : 38,
"componentType" : 5126,
"count" : 1504,
"max" : [
0.04999995231628418,
1,
0
],
"min" : [
-0.04999995231628418,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 39,
"componentType" : 5126,
"count" : 1504,
"type" : "VEC3"
},
{
"bufferView" : 40,
"componentType" : 5126,
"count" : 1504,
"max" : [
0.04999995231628418,
1,
0
],
"min" : [
-0.04999995231628418,
0,
0
],
"type" : "VEC3"
},
{
"bufferView" : 41,
"componentType" : 5126,
"count" : 1504,
"type" : "VEC3"
},
{
"bufferView" : 42,
"componentType" : 5126,
"count" : 281,
"max" : [
9.366666666666667
],
"min" : [
0.03333333333333333
],
"type" : "SCALAR"
},
{
"bufferView" : 43,
"componentType" : 5126,
"count" : 2248,
"type" : "SCALAR"
},
{
"bufferView" : 44,
"componentType" : 5126,
"count" : 59,
"max" : [
1.9666666666666666
],
"min" : [
0.03333333333333333
],
"type" : "SCALAR"
},
{
"bufferView" : 45,
"componentType" : 5126,
"count" : 472,
"type" : "SCALAR"
},
{
"bufferView" : 46,
"componentType" : 5126,
"count" : 191,
"max" : [
6.366666666666666
],
"min" : [
0.03333333333333333
],
"type" : "SCALAR"
},
{
"bufferView" : 47,
"componentType" : 5126,
"count" : 1528,
"type" : "SCALAR"
}
],
"bufferViews" : [
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 0
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 288
},
{
"buffer" : 0,
"byteLength" : 192,
"byteOffset" : 576
},
{
"buffer" : 0,
"byteLength" : 192,
"byteOffset" : 768
},
{
"buffer" : 0,
"byteLength" : 72,
"byteOffset" : 960
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 1032
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 1320
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 1608
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 1896
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 2184
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 2472
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 2760
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 3048
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 3336
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 3624
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 3912
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 4200
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 4488
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 4776
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 5064
},
{
"buffer" : 0,
"byteLength" : 288,
"byteOffset" : 5352
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 5640
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 23688
},
{
"buffer" : 0,
"byteLength" : 12032,
"byteOffset" : 41736
},
{
"buffer" : 0,
"byteLength" : 12032,
"byteOffset" : 53768
},
{
"buffer" : 0,
"byteLength" : 14400,
"byteOffset" : 65800
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 80200
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 98248
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 116296
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 134344
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 152392
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 170440
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 188488
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 206536
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 224584
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 242632
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 260680
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 278728
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 296776
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 314824
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 332872
},
{
"buffer" : 0,
"byteLength" : 18048,
"byteOffset" : 350920
},
{
"buffer" : 0,
"byteLength" : 1124,
"byteOffset" : 368968
},
{
"buffer" : 0,
"byteLength" : 8992,
"byteOffset" : 370092
},
{
"buffer" : 0,
"byteLength" : 236,
"byteOffset" : 379084
},
{
"buffer" : 0,
"byteLength" : 1888,
"byteOffset" : 379320
},
{
"buffer" : 0,
"byteLength" : 764,
"byteOffset" : 381208
},
{
"buffer" : 0,
"byteLength" : 6112,
"byteOffset" : 381972
}
],
"samplers" : [
{
"magFilter" : 9729,
"minFilter" : 9987
}
],
"buffers" : [
{
"byteLength" : 388084,
"uri" : "MorphStressTest.bin"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 B

View File

@@ -0,0 +1,15 @@
# LICENSE file for the model: Simple Morph
All files in this directory tree are licensed as indicated below.
* All files directly associated with the model including all text, image and binary files:
* [CC0 1.0 Universal]("https://creativecommons.org/publicdomain/zero/1.0/legalcode") [SPDX license identifier: "CC0-1.0"]
* This file and all other metadocumentation files including "metadata.json":
* [Creative Commons Attribtution 4.0 International]("https://creativecommons.org/licenses/by/4.0/legalcode") [SPDX license identifier: "CC-BY-4.0"]
Full license text of these licenses are available at the links above
#### Generated by modelmetadata

View File

@@ -0,0 +1,17 @@
## Screenshot
![screenshot](screenshot/screenshot.png)
## Notes
This is an example of a glTF asset that uses morph targets, as described in the
[Simple Morph Target](https://github.com/KhronosGroup/glTF-Tutorials/blob/master/gltfTutorial/gltfTutorial_017_SimpleMorphTarget.md)
section of the glTF tutorial.
## Data layout
The following image shows the data layout of this sample:
![simpleMorphStructure](screenshot/simpleMorphStructure.png)

View File

@@ -0,0 +1,41 @@
# Simple Morph
## Tags
[core](../../Models-core.md), [testing](../../Models-testing.md)
## Summary
A triangle with a morph animation applied
## Operations
* [Display](https://github.khronos.org/glTF-Sample-Viewer-Release/?model=https://raw.GithubUserContent.com/KhronosGroup/glTF-Sample-Assets/main/./Models/SimpleMorph/glTF/SimpleMorph.gltf) in SampleViewer
* [Model Directory](./)
## Screenshot
![screenshot](screenshot/screenshot.png)
## Notes
This is an example of a glTF asset that uses morph targets, as described in the
[Simple Morph Target](https://github.com/KhronosGroup/glTF-Tutorials/blob/master/gltfTutorial/gltfTutorial_017_SimpleMorphTarget.md)
section of the glTF tutorial.
## Data layout
The following image shows the data layout of this sample:
![simpleMorphStructure](screenshot/simpleMorphStructure.png)
## Legal
&copy; 2017, Public. [CC0 1.0 Universal](https://creativecommons.org/publicdomain/zero/1.0/legalcode)
- javagl for Everything
#### Assembled by modelmetadata

View File

@@ -0,0 +1,189 @@
{
"scene" : 0,
"scenes":[
{
"nodes":[
0
]
}
],
"nodes":[
{
"mesh":0
}
],
"meshes":[
{
"primitives":[
{
"attributes":{
"POSITION":1
},
"targets":[
{
"POSITION":2
},
{
"POSITION":3
}
],
"indices":0
}
],
"weights":[
0.5,
0.5
]
}
],
"animations":[
{
"samplers":[
{
"input":4,
"interpolation":"LINEAR",
"output":5
}
],
"channels":[
{
"sampler":0,
"target":{
"node":0,
"path":"weights"
}
}
]
}
],
"buffers":[
{
"uri" : "simpleMorphGeometry.bin",
"byteLength":116
},
{
"uri" : "simpleMorphAnimation.bin",
"byteLength":60
}
],
"bufferViews":[
{
"buffer":0,
"byteOffset":0,
"byteLength":6,
"target":34963
},
{
"buffer":0,
"byteOffset":8,
"byteLength":108,
"byteStride":12,
"target":34962
},
{
"buffer":1,
"byteOffset":0,
"byteLength":20
},
{
"buffer":1,
"byteOffset":20,
"byteLength":40
}
],
"accessors":[
{
"bufferView":0,
"byteOffset":0,
"componentType":5123,
"count":3,
"type":"SCALAR",
"max":[
2
],
"min":[
0
]
},
{
"bufferView":1,
"byteOffset":0,
"componentType":5126,
"count":3,
"type":"VEC3",
"max":[
1.0,
0.5,
0.0
],
"min":[
0.0,
0.0,
0.0
]
},
{
"bufferView":1,
"byteOffset":36,
"componentType":5126,
"count":3,
"type":"VEC3",
"max":[
0.0,
1.0,
0.0
],
"min":[
-1.0,
0.0,
0.0
]
},
{
"bufferView":1,
"byteOffset":72,
"componentType":5126,
"count":3,
"type":"VEC3",
"max":[
1.0,
1.0,
0.0
],
"min":[
0.0,
0.0,
0.0
]
},
{
"bufferView":2,
"byteOffset":0,
"componentType":5126,
"count":5,
"type":"SCALAR",
"max":[
4.0
],
"min":[
0.0
]
},
{
"bufferView":3,
"byteOffset":0,
"componentType":5126,
"count":10,
"type":"SCALAR",
"max":[
1.0
],
"min":[
0.0
]
}
],
"asset":{
"version":"2.0"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 B

View File

@@ -0,0 +1,16 @@
# glTF 3D model reference images
## AnimatedMorphCube
<img alt="AnimatedMorphCube" src="screenshots/AnimatedMorphCube.gif" width=180 />
## AnimatedMorphSphere
<img alt="AnimatedMorphSphere" src="screenshots/AnimatedMorphSphere.gif" width=180 />
## MorphPrimitivesTest
<img alt="MorphPrimitivesTest" src="screenshots/MorphPrimitivesTest.gif" width=180 />
## MorphStressTest
<img alt="MorphStressTest" src="screenshots/MorphStressTest_cycle_animations.gif" width=180 />
## SimpleMorph
<img alt="SimpleMorph" src="screenshots/SimpleMorph.gif" width=180 />

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB