Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[USD] Support load .usd/.usda/.usdc/.usdz models via "tinyusdz" project (prototyping branch) #5547

Open
8 of 13 tasks
tellypresence opened this issue Apr 19, 2024 · 7 comments · May be fixed by #5551
Open
8 of 13 tasks
Labels
Feature-Request Global flag to mark feature requests

Comments

@tellypresence
Copy link
Contributor

tellypresence commented Apr 19, 2024

Evaluate tinyusdz rendermesh-refactor branch for feasibility

Use PR #5551 for testing

rendermesh-refactor branch is under active development, several features are working reasonably well at least on some test models

  • vertices
  • faces
  • normals
  • UVs
  • material colors
  • material textures
  • embedded textures

Partially working

  • blend shapes (morph meshes) detection: able to extract blendshapes in some rudimentary models

What's not working yet

  • rig/bones support
  • skeletal/skinned animations
  • blend shape animations
  • node-only animations (for testing will need USD format model similar to node-only MotionCaptureROM.ase)

Other problems

  • "Composition" (layered/hierarchical models) not supported yet (this means many USD models encountered "in the wild" will fail to load)

P.S. During the early stages of this effort, I raised and commented on several issues on the tinyusdz project e.g.

Unfortunately, while I had meant to be constructive and helpful, I appear to have become something of a nuisance, resulting in my being banned from raising or commenting on issues on the tinyusdz project. My own fault, of course, but as it's not an ideal situation for someone trying to adapt the project in this manner I will park this endeavor for the time being. Latest working changes have been pushed up (I had some code which attempted to parse animations and bones but was unable to verify basic operational correctness, so have not included that to avoid clutter and confusion)

@tellypresence tellypresence added the Feature-Request Global flag to mark feature requests label Apr 19, 2024
@tellypresence
Copy link
Contributor Author

tellypresence commented Apr 19, 2024

Blendshapes/morph meshes

Current blendshape status: in some rudimentary models, blendshapes are detected and appear to be valid. In other models expected to contain blendshapes, no blendshapes are detected during model load.

Also struggling to extract animations for blendshapes in a sensible way.

Models with valid blendshapes

ModelScreenshot(s)Notes
blendshape.usdcNo animations have been extracted, demo screenshot simply morphs between available blendshapes over a few seconds

Models which would be expected to have valid blendshapes where no valid blendshapes detected

ModelScreenshot(s)Notes
animatedMorphCube.usdaHas 2 blendshapes, but both have zero point offsets i.e. blendshapes are identical to the main mesh so no visible morphing
MorphStressTest.glb.blender.usdzModel loads OK but while morph meshes are expected to be present, none detected
Morph_Stress_Test.usdzModel loads OK but while morph meshes are expected to be present, none detected

Blendshape models which fail to load

ModelScreenshot(s)Notes
morphedCube.usdaValidation failed: a node of the scene-graph is nullptr

@tellypresence
Copy link
Contributor Author

tellypresence commented Apr 19, 2024

Bones/skeletons/skinning

I'm struggling to understand how to convert the data from tinyusdz render scene into skeletons. It appears that vertex weights are a per-mesh, rather than per-bone, attribute, but my understanding is that each bone should provide its own set of vertex weights. Anyway I can't seem to discover where those values would be provided.

@tellypresence
Copy link
Contributor Author

tellypresence commented Apr 19, 2024

Models which fail to load

Disney

None of the sample models work

Intel

None of the sample models work

Pixar

None of the sample models work

usd-wg

With the exception of Vehicles, none of the full assets work

@tellypresence
Copy link
Contributor Author

tellypresence commented Apr 19, 2024

Models which used to load but now fail in recent commits

Apple

ModelNotes
toy_drummer_idle.usdzThis model used to work with tinyusdz

Sketchfab

ModelScreenshot(s)Notes
Medical Assistance BotThis model used to work but in more recent commits now fails to load due to internal tinyusdz failure to convert to "render-scene"

@tellypresence
Copy link
Contributor Author

(reserved)

@tellypresence
Copy link
Contributor Author

tellypresence commented Apr 19, 2024

Models which load and render with problems

Apple

ModelScreenshotNotes
fender_stratocaster.usdzUVs incorrect (may be a problem in the model itself)

@tellypresence
Copy link
Contributor Author

tellypresence commented Apr 19, 2024

Models which load and render well

Apple

13 of the 15 demo models load and render OK

ModelScreenshotNotes
toy_biplane_idle.usdz(Only started working in recent commit)
robot_walk_idle.usdz
toy_car.usdz
flower_tulip.usdz
gramophone.usdz
sneaker_airforce.usdz
sneaker_pegasustrail.usdz
tv_retro.usdz
chair_swan.usdz
wateringcan.usdz
teapot.usdz
pancakes.usdz
cup_saucer_set.usdz

Polyhaven

Test models with .exr textures

ModelScreenshot(s)Notes
horse_statue_01.geo.usdc
carved_wooden_elephant.geo.usdc
sofa_03.geo.usdc

Sketchfab

ModelScreenshot(s)Notes
CREATURE MONSTER 3D
Furriers' guild chest in Myślenice
Netsuke - Shoki capturing an oni
compsognathus.usdz

usd-wg test assets

ModelScreenshot(s)Notes
BrainStem.usdz
CesiumMan.usdz
DamagedHelmet.usdz

@tellypresence tellypresence changed the title [USD] Evaluate feasibility of USD implementation via "tinyusdz" project "rendermesh-refactor" branch [USD] Support load .usd/.usda/.usdc/.usz models via "tinyusdz" project "rendermesh-refactor" branch Apr 23, 2024
@tellypresence tellypresence changed the title [USD] Support load .usd/.usda/.usdc/.usz models via "tinyusdz" project "rendermesh-refactor" branch [USD] Support load .usd/.usda/.usdc/.usdz models via "tinyusdz" project "rendermesh-refactor" branch Apr 23, 2024
@tellypresence tellypresence changed the title [USD] Support load .usd/.usda/.usdc/.usdz models via "tinyusdz" project "rendermesh-refactor" branch [USD] Support load .usd/.usda/.usdc/.usdz models via "tinyusdz" project (prototyping branch) Apr 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature-Request Global flag to mark feature requests
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant