@tushar-br/editing-pack 1.0.195 → 1.0.196

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/package.json +1 -1
  2. package/staging_area/Blender/BlendThumb.dll +0 -0
  3. package/staging_area/Blender/BlendThumb.lib +0 -0
  4. package/staging_area/Blender/blender.shared/usd_ms.dll +0 -0
  5. package/staging_area/Blender/blender.shared/vulkan-1.dll +0 -0
  6. package/staging_area/Blender/blender_cpu_check.dll +0 -0
  7. package/staging_area/Blender/blender_cpu_check.lib +0 -0
  8. package/staging_area/Blender/blender_debug_cycles.cmd +20 -0
  9. package/staging_area/Blender/blender_debug_gpu.cmd +21 -0
  10. package/staging_area/Blender/blender_debug_gpu_glitchworkaround.cmd +21 -0
  11. package/staging_area/Blender/blender_debug_log.cmd +20 -0
  12. package/staging_area/Blender/blender_factory_startup.cmd +20 -0
  13. package/staging_area/Blender/blender_factory_startup_vulkan.cmd +20 -0
  14. package/staging_area/Blender/blender_oculus.cmd +14 -0
  15. package/staging_area/Blender/blender_startup_opengl.cmd +4 -0
  16. package/staging_area/Blender/blender_startup_vulkan.cmd +4 -0
  17. package/staging_area/Blender/blender_system_info.cmd +16 -0
  18. package/staging_area/Blender/copyright.txt +39 -0
  19. package/staging_area/Blender/blender.shared/shaderc_shared.dll +0 -0
  20. package/staging_area/Blender/blender.shared/sndfile.dll +0 -0
  21. package/staging_area/Blender/blender.shared/swresample-5.dll +0 -0
  22. package/staging_area/Blender/blender.shared/swscale-8.dll +0 -0
  23. package/staging_area/Blender/blender.shared/sycl8.dll +0 -0
  24. package/staging_area/Blender/blender.shared/tbb12.dll +0 -0
  25. package/staging_area/Blender/blender.shared/tbbmalloc.dll +0 -0
  26. package/staging_area/Blender/blender.shared/tbbmalloc_proxy.dll +0 -0
  27. package/staging_area/Blender/blender.shared/ur_adapter_level_zero.dll +0 -0
  28. package/staging_area/Blender/blender.shared/ur_adapter_level_zerod.dll +0 -0
  29. package/staging_area/Blender/blender.shared/ur_loader.dll +0 -0
  30. package/staging_area/Blender/blender.shared/ur_loaderd.dll +0 -0
  31. package/staging_area/Blender/blender.shared/ur_win_proxy_loader.dll +0 -0
  32. package/staging_area/Blender/blender.shared/ur_win_proxy_loaderd.dll +0 -0
  33. package/staging_area/Blender/blender.shared/usd/ar/resources/plugInfo.json +0 -23
  34. package/staging_area/Blender/blender.shared/usd/esf/resources/plugInfo.json +0 -15
  35. package/staging_area/Blender/blender.shared/usd/esfUsd/resources/plugInfo.json +0 -15
  36. package/staging_area/Blender/blender.shared/usd/exec/resources/plugInfo.json +0 -15
  37. package/staging_area/Blender/blender.shared/usd/execGeom/resources/plugInfo.json +0 -23
  38. package/staging_area/Blender/blender.shared/usd/execUsd/resources/plugInfo.json +0 -15
  39. package/staging_area/Blender/blender.shared/usd/glf/resources/plugInfo.json +0 -14
  40. package/staging_area/Blender/blender.shared/usd/glf/resources/shaders/pcfShader.glslfx +0 -124
  41. package/staging_area/Blender/blender.shared/usd/glf/resources/shaders/simpleLighting.glslfx +0 -543
  42. package/staging_area/Blender/blender.shared/usd/hd/resources/codegenTemplates/schemaClass.cpp +0 -265
  43. package/staging_area/Blender/blender.shared/usd/hd/resources/codegenTemplates/schemaClass.h +0 -310
  44. package/staging_area/Blender/blender.shared/usd/hd/resources/plugInfo.json +0 -12
  45. package/staging_area/Blender/blender.shared/usd/hdGp/resources/plugInfo.json +0 -24
  46. package/staging_area/Blender/blender.shared/usd/hdSt/resources/plugInfo.json +0 -76
  47. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/basisCurves.glslfx +0 -1365
  48. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/compute.glslfx +0 -439
  49. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/domeLight.glslfx +0 -280
  50. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/edgeId.glslfx +0 -237
  51. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/fallbackLighting.glslfx +0 -59
  52. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/fallbackLightingShader.glslfx +0 -27
  53. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/fallbackMaterialNetwork.glslfx +0 -47
  54. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/fallbackVolume.glslfx +0 -97
  55. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/frustumCull.glslfx +0 -448
  56. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/imageShader.glslfx +0 -103
  57. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/instancing.glslfx +0 -217
  58. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/invalidMaterialNetwork.glslfx +0 -53
  59. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/mesh.glslfx +0 -1519
  60. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/meshFaceCull.glslfx +0 -40
  61. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/meshNormal.glslfx +0 -201
  62. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/meshWire.glslfx +0 -326
  63. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/overlayShader.glslfx +0 -66
  64. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/pointDisk.glslfx +0 -103
  65. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/pointId.glslfx +0 -87
  66. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/points.glslfx +0 -155
  67. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/ptexTexture.glslfx +0 -371
  68. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/renderPass.glslfx +0 -319
  69. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/renderPassShader.glslfx +0 -53
  70. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/simpleLightingShader.glslfx +0 -41
  71. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/surfaceHelpers.glslfx +0 -80
  72. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/terminals.glslfx +0 -458
  73. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/visibility.glslfx +0 -80
  74. package/staging_area/Blender/blender.shared/usd/hdSt/resources/shaders/volume.glslfx +0 -631
  75. package/staging_area/Blender/blender.shared/usd/hdSt/resources/textures/fallbackBlackDomeLight.png +0 -0
  76. package/staging_area/Blender/blender.shared/usd/hdStorm/resources/plugInfo.json +0 -22
  77. package/staging_area/Blender/blender.shared/usd/hdsi/resources/plugInfo.json +0 -20
  78. package/staging_area/Blender/blender.shared/usd/hdx/resources/plugInfo.json +0 -14
  79. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/boundingBox.glslfx +0 -52
  80. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/colorChannel.glslfx +0 -53
  81. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/colorCorrection.glslfx +0 -57
  82. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/fullscreen.glslfx +0 -48
  83. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/oitResolveImageShader.glslfx +0 -93
  84. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/outline.glslfx +0 -138
  85. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/renderPass.glslfx +0 -405
  86. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/renderPassColorAndSelectionShader.glslfx +0 -56
  87. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/renderPassColorShader.glslfx +0 -55
  88. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/renderPassColorWithOccludedSelectionShader.glslfx +0 -55
  89. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/renderPassOitOpaqueShader.glslfx +0 -53
  90. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/renderPassOitShader.glslfx +0 -54
  91. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/renderPassOitVolumeShader.glslfx +0 -53
  92. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/renderPassPickingShader.glslfx +0 -51
  93. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/renderPassShadowShader.glslfx +0 -53
  94. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/selection.glslfx +0 -476
  95. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/skydome.glslfx +0 -46
  96. package/staging_area/Blender/blender.shared/usd/hdx/resources/shaders/visualize.glslfx +0 -107
  97. package/staging_area/Blender/blender.shared/usd/hdx/resources/textures/StinsonBeach.hdr +0 -0
  98. package/staging_area/Blender/blender.shared/usd/hdx/resources/textures/StinsonBeach.tex +0 -0
  99. package/staging_area/Blender/blender.shared/usd/hgiGL/resources/plugInfo.json +0 -18
  100. package/staging_area/Blender/blender.shared/usd/hgiVulkan/resources/plugInfo.json +0 -18
  101. package/staging_area/Blender/blender.shared/usd/hio/resources/plugInfo.json +0 -25
  102. package/staging_area/Blender/blender.shared/usd/hioOiio/resources/plugInfo.json +0 -20
  103. package/staging_area/Blender/blender.shared/usd/hioOpenVDB/resources/plugInfo.json +0 -20
  104. package/staging_area/Blender/blender.shared/usd/plugInfo.json +0 -5
  105. package/staging_area/Blender/blender.shared/usd/sdf/resources/plugInfo.json +0 -94
  106. package/staging_area/Blender/blender.shared/usd/sdr/resources/plugInfo.json +0 -21
  107. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/CMakeLists.txt +0 -15
  108. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/__init__.py +0 -10
  109. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/api.h +0 -30
  110. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/generatedSchema.classes.txt +0 -16
  111. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/generatedSchema.module.h +0 -11
  112. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/module.cpp +0 -18
  113. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/moduleDeps.cpp +0 -27
  114. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/plugInfo.json +0 -15
  115. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/schema.usda +0 -12
  116. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/schemaClass.cpp +0 -438
  117. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/schemaClass.h +0 -489
  118. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/schemaUserDoc.usda +0 -20
  119. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/tokens.cpp +0 -30
  120. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/tokens.h +0 -74
  121. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/wrapSchemaClass.cpp +0 -328
  122. package/staging_area/Blender/blender.shared/usd/usd/resources/codegenTemplates/wrapTokens.cpp +0 -25
  123. package/staging_area/Blender/blender.shared/usd/usd/resources/generatedSchema.usda +0 -146
  124. package/staging_area/Blender/blender.shared/usd/usd/resources/plugInfo.json +0 -125
  125. package/staging_area/Blender/blender.shared/usd/usd/resources/usd/schema.usda +0 -538
  126. package/staging_area/Blender/blender.shared/usd/usdGeom/resources/generatedSchema.usda +0 -2689
  127. package/staging_area/Blender/blender.shared/usd/usdGeom/resources/plugInfo.json +0 -433
  128. package/staging_area/Blender/blender.shared/usd/usdGeom/resources/usdGeom/schema.usda +0 -2775
  129. package/staging_area/Blender/blender.shared/usd/usdGeomValidators/resources/plugInfo.json +0 -39
  130. package/staging_area/Blender/blender.shared/usd/usdHydra/resources/generatedSchema.usda +0 -28
  131. package/staging_area/Blender/blender.shared/usd/usdHydra/resources/plugInfo.json +0 -38
  132. package/staging_area/Blender/blender.shared/usd/usdHydra/resources/shaders/empty.glslfx +0 -18
  133. package/staging_area/Blender/blender.shared/usd/usdHydra/resources/shaders/shaderDefs.usda +0 -252
  134. package/staging_area/Blender/blender.shared/usd/usdHydra/resources/usdHydra/schema.usda +0 -201
  135. package/staging_area/Blender/blender.shared/usd/usdImaging/resources/plugInfo.json +0 -340
  136. package/staging_area/Blender/blender.shared/usd/usdImagingGL/resources/plugInfo.json +0 -12
  137. package/staging_area/Blender/blender.shared/usd/usdLux/resources/generatedSchema.usda +0 -1165
  138. package/staging_area/Blender/blender.shared/usd/usdLux/resources/plugInfo.json +0 -266
  139. package/staging_area/Blender/blender.shared/usd/usdLux/resources/usdLux/schema.usda +0 -1511
  140. package/staging_area/Blender/blender.shared/usd/usdMedia/resources/generatedSchema.usda +0 -95
  141. package/staging_area/Blender/blender.shared/usd/usdMedia/resources/plugInfo.json +0 -40
  142. package/staging_area/Blender/blender.shared/usd/usdMedia/resources/usdMedia/schema.usda +0 -214
  143. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/generatedSchema.usda +0 -20
  144. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/disney_principled.mtlx +0 -140
  145. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/gltf_pbr.mtlx +0 -695
  146. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/lama/lama_add.mtlx +0 -52
  147. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/lama/lama_conductor.mtlx +0 -123
  148. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/lama/lama_dielectric.mtlx +0 -163
  149. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/lama/lama_diffuse.mtlx +0 -45
  150. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/lama/lama_emission.mtlx +0 -20
  151. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/lama/lama_generalized_schlick.mtlx +0 -172
  152. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/lama/lama_iridescence.mtlx +0 -103
  153. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/lama/lama_layer.mtlx +0 -27
  154. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/lama/lama_mix.mtlx +0 -41
  155. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/lama/lama_sheen.mtlx +0 -41
  156. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/lama/lama_sss.mtlx +0 -60
  157. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/lama/lama_surface.mtlx +0 -28
  158. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/lama/lama_translucent.mtlx +0 -22
  159. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/open_pbr_surface.mtlx +0 -676
  160. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/standard_surface.mtlx +0 -431
  161. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/translation/open_pbr_to_standard_surface.mtlx +0 -362
  162. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/translation/standard_surface_to_gltf_pbr.mtlx +0 -166
  163. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/translation/standard_surface_to_open_pbr.mtlx +0 -309
  164. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/translation/standard_surface_to_usd.mtlx +0 -128
  165. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/bxdf/usd_preview_surface.mtlx +0 -438
  166. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/cmlib/cmlib_defs.mtlx +0 -110
  167. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/cmlib/cmlib_ng.mtlx +0 -392
  168. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/lights/genglsl/lights_genglsl_impl.mtlx +0 -13
  169. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/lights/genglsl/mx_directional_light.glsl +0 -5
  170. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/lights/genglsl/mx_point_light.glsl +0 -8
  171. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/lights/genglsl/mx_spot_light.glsl +0 -13
  172. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/lights/genmsl/lights_genmsl_impl.mtlx +0 -13
  173. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/lights/genmsl/mx_directional_light.metal +0 -5
  174. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/lights/genmsl/mx_point_light.metal +0 -8
  175. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/lights/genmsl/mx_spot_light.metal +0 -13
  176. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/lights/lights_defs.mtlx +0 -53
  177. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/core.mdl +0 -206
  178. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/hsv.mdl +0 -80
  179. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/noise.mdl +0 -759
  180. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/pbrlib.mdl +0 -30
  181. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/pbrlib_1_10.mdl +0 -234
  182. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/pbrlib_1_6.mdl +0 -1083
  183. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/pbrlib_1_7.mdl +0 -265
  184. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/pbrlib_1_8.mdl +0 -36
  185. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/pbrlib_1_9.mdl +0 -373
  186. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/sampling.mdl +0 -182
  187. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/stdlib.mdl +0 -18
  188. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/stdlib_1_10.mdl +0 -18
  189. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/stdlib_1_6.mdl +0 -4474
  190. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/stdlib_1_7.mdl +0 -18
  191. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/stdlib_1_8.mdl +0 -444
  192. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/mdl/materialx/stdlib_1_9.mdl +0 -388
  193. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/nprlib/genglsl/nprlib_genglsl_impl.mtlx +0 -17
  194. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/nprlib/genmdl/nprlib_genmdl_impl.mtlx +0 -17
  195. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/nprlib/genmsl/nprlib_genmsl_impl.mtlx +0 -17
  196. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/nprlib/genosl/nprlib_genosl_impl.mtlx +0 -17
  197. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/nprlib/nprlib_defs.mtlx +0 -55
  198. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/nprlib/nprlib_ng.mtlx +0 -114
  199. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/lib/mx_closure_type.glsl +0 -17
  200. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/lib/mx_environment_fis.glsl +0 -69
  201. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/lib/mx_environment_none.glsl +0 -11
  202. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/lib/mx_environment_prefilter.glsl +0 -30
  203. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/lib/mx_generate_albedo_table.glsl +0 -10
  204. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/lib/mx_generate_prefilter_env.glsl +0 -66
  205. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/lib/mx_microfacet.glsl +0 -106
  206. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/lib/mx_microfacet_diffuse.glsl +0 -199
  207. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/lib/mx_microfacet_sheen.glsl +0 -189
  208. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/lib/mx_microfacet_specular.glsl +0 -510
  209. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/lib/mx_shadow.glsl +0 -23
  210. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/lib/mx_transmission_opacity.glsl +0 -6
  211. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/lib/mx_transmission_refract.glsl +0 -14
  212. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_add_bsdf.glsl +0 -7
  213. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_add_edf.glsl +0 -6
  214. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_anisotropic_vdf.glsl +0 -6
  215. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_artistic_ior.glsl +0 -17
  216. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_blackbody.glsl +0 -48
  217. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_burley_diffuse_bsdf.glsl +0 -33
  218. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_chiang_hair_bsdf.glsl +0 -291
  219. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_conductor_bsdf.glsl +0 -51
  220. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_dielectric_bsdf.glsl +0 -73
  221. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_displacement_float.glsl +0 -5
  222. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_displacement_vector3.glsl +0 -5
  223. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_generalized_schlick_bsdf.glsl +0 -80
  224. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_generalized_schlick_edf.glsl +0 -13
  225. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_layer_bsdf.glsl +0 -7
  226. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_layer_vdf.glsl +0 -7
  227. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_mix_bsdf.glsl +0 -7
  228. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_mix_edf.glsl +0 -6
  229. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_multiply_bsdf_color3.glsl +0 -8
  230. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_multiply_bsdf_float.glsl +0 -8
  231. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_multiply_edf_color3.glsl +0 -6
  232. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_multiply_edf_float.glsl +0 -6
  233. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_oren_nayar_diffuse_bsdf.glsl +0 -37
  234. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_roughness_anisotropy.glsl +0 -15
  235. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_roughness_dual.glsl +0 -9
  236. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_sheen_bsdf.glsl +0 -60
  237. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_subsurface_bsdf.glsl +0 -33
  238. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_translucent_bsdf.glsl +0 -28
  239. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/mx_uniform_edf.glsl +0 -9
  240. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genglsl/pbrlib_genglsl_impl.mtlx +0 -89
  241. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genmdl/pbrlib_genmdl_impl.mtlx +0 -105
  242. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genmsl/pbrlib_genmsl_impl.mtlx +0 -10
  243. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genosl/lib/mx_microfacet.osl +0 -78
  244. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genosl/mx_anisotropic_vdf.osl +0 -8
  245. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genosl/mx_artistic_ior.osl +0 -17
  246. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genosl/mx_blackbody.osl +0 -49
  247. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genosl/mx_chiang_hair_bsdf.osl +0 -12
  248. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genosl/mx_chiang_hair_roughness.osl +0 -7
  249. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genosl/mx_dielectric_bsdf.osl +0 -6
  250. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genosl/mx_generalized_schlick_bsdf.osl +0 -6
  251. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genosl/mx_generalized_schlick_edf.osl +0 -8
  252. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genosl/mx_roughness_anisotropy.osl +0 -15
  253. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genosl/mx_roughness_dual.osl +0 -12
  254. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genosl/mx_subsurface_bsdf.osl +0 -8
  255. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genosl/mx_surface.osl +0 -6
  256. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/genosl/pbrlib_genosl_impl.mtlx +0 -86
  257. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/pbrlib_defs.mtlx +0 -462
  258. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/pbrlib/pbrlib_ng.mtlx +0 -22
  259. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/lib/mx_hsv.glsl +0 -91
  260. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/lib/mx_math.glsl +0 -35
  261. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/lib/mx_noise.glsl +0 -707
  262. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/lib/mx_sampling.glsl +0 -91
  263. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/lib/mx_transform_uv.glsl +0 -5
  264. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/lib/mx_transform_uv_vflip.glsl +0 -5
  265. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_aastep.glsl +0 -5
  266. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_burn_color3.glsl +0 -9
  267. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_burn_color4.glsl +0 -10
  268. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_burn_float.glsl +0 -9
  269. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_cellnoise2d_float.glsl +0 -6
  270. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_cellnoise3d_float.glsl +0 -6
  271. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_creatematrix_vector3_matrix33.glsl +0 -6
  272. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_creatematrix_vector3_matrix44.glsl +0 -7
  273. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_creatematrix_vector4_matrix44.glsl +0 -7
  274. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_disjointover_color4.glsl +0 -25
  275. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_dodge_color3.glsl +0 -9
  276. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_dodge_color4.glsl +0 -10
  277. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_dodge_float.glsl +0 -9
  278. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_fractal3d_float.glsl +0 -7
  279. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_fractal3d_vector2.glsl +0 -7
  280. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_fractal3d_vector3.glsl +0 -7
  281. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_fractal3d_vector4.glsl +0 -7
  282. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_hsvtorgb_color3.glsl +0 -6
  283. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_hsvtorgb_color4.glsl +0 -6
  284. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_image_color3.glsl +0 -7
  285. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_image_color4.glsl +0 -7
  286. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_image_float.glsl +0 -7
  287. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_image_vector2.glsl +0 -7
  288. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_image_vector3.glsl +0 -7
  289. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_image_vector4.glsl +0 -7
  290. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_luminance_color3.glsl +0 -4
  291. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_luminance_color4.glsl +0 -4
  292. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_mix_surfaceshader.glsl +0 -5
  293. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_noise2d_float.glsl +0 -7
  294. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_noise2d_vector2.glsl +0 -7
  295. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_noise2d_vector3.glsl +0 -7
  296. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_noise2d_vector4.glsl +0 -8
  297. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_noise3d_float.glsl +0 -7
  298. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_noise3d_vector2.glsl +0 -7
  299. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_noise3d_vector3.glsl +0 -7
  300. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_noise3d_vector4.glsl +0 -8
  301. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_normalmap.glsl +0 -13
  302. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_premult_color4.glsl +0 -4
  303. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_ramplr_float.glsl +0 -4
  304. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_ramplr_vector2.glsl +0 -4
  305. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_ramplr_vector3.glsl +0 -4
  306. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_ramplr_vector4.glsl +0 -4
  307. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_ramptb_float.glsl +0 -4
  308. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_ramptb_vector2.glsl +0 -4
  309. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_ramptb_vector3.glsl +0 -4
  310. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_ramptb_vector4.glsl +0 -4
  311. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_rgbtohsv_color3.glsl +0 -6
  312. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_rgbtohsv_color4.glsl +0 -6
  313. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_rotate_vector2.glsl +0 -7
  314. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_rotate_vector3.glsl +0 -19
  315. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_smoothstep_float.glsl +0 -9
  316. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_splitlr_float.glsl +0 -6
  317. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_splitlr_vector2.glsl +0 -6
  318. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_splitlr_vector3.glsl +0 -6
  319. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_splitlr_vector4.glsl +0 -6
  320. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_splittb_float.glsl +0 -6
  321. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_splittb_vector2.glsl +0 -6
  322. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_splittb_vector3.glsl +0 -6
  323. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_splittb_vector4.glsl +0 -6
  324. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_transformmatrix_vector2M3.glsl +0 -5
  325. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_transformmatrix_vector3M4.glsl +0 -5
  326. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_unpremult_color4.glsl +0 -4
  327. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_worleynoise2d_float.glsl +0 -6
  328. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_worleynoise2d_vector2.glsl +0 -6
  329. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_worleynoise2d_vector3.glsl +0 -6
  330. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_worleynoise3d_float.glsl +0 -6
  331. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_worleynoise3d_vector2.glsl +0 -6
  332. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/mx_worleynoise3d_vector3.glsl +0 -6
  333. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genglsl/stdlib_genglsl_impl.mtlx +0 -756
  334. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genmdl/stdlib_genmdl_impl.mtlx +0 -762
  335. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genmsl/lib/mx_math.metal +0 -129
  336. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genmsl/lib/mx_matscalaroperators.metal +0 -55
  337. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genmsl/lib/mx_sampling.metal +0 -91
  338. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genmsl/lib/mx_texture.metal +0 -25
  339. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genmsl/stdlib_genmsl_impl.mtlx +0 -160
  340. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/include/color4.h +0 -332
  341. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/include/matrix33.h +0 -161
  342. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/include/mx_funcs.h +0 -673
  343. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/include/vector2.h +0 -333
  344. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/include/vector4.h +0 -424
  345. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/lib/mx_sampling.osl +0 -150
  346. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/lib/mx_transform_uv.osl +0 -4
  347. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/lib/mx_transform_uv_vflip.osl +0 -4
  348. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_burn_color3.osl +0 -8
  349. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_burn_color4.osl +0 -9
  350. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_burn_float.osl +0 -9
  351. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_cellnoise2d_float.osl +0 -4
  352. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_cellnoise3d_float.osl +0 -4
  353. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_creatematrix.osl +0 -23
  354. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_disjointover_color4.osl +0 -25
  355. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_dodge_color3.osl +0 -8
  356. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_dodge_color4.osl +0 -9
  357. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_dodge_float.osl +0 -9
  358. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_fractal3d_float.osl +0 -5
  359. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_fractal3d_vector2.osl +0 -5
  360. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_fractal3d_vector3.osl +0 -5
  361. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_fractal3d_vector4.osl +0 -5
  362. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_frame_float.osl +0 -4
  363. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_geomcolor_color3.osl +0 -4
  364. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_geomcolor_color4.osl +0 -9
  365. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_geomcolor_float.osl +0 -4
  366. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_geompropvalue_boolean.osl +0 -5
  367. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_geompropvalue_color3.osl +0 -5
  368. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_geompropvalue_color4.osl +0 -16
  369. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_geompropvalue_float.osl +0 -7
  370. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_geompropvalue_integer.osl +0 -5
  371. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_geompropvalue_string.osl +0 -5
  372. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_geompropvalue_vector2.osl +0 -13
  373. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_geompropvalue_vector3.osl +0 -5
  374. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_geompropvalue_vector4.osl +0 -15
  375. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_heighttonormal_vector3.osl +0 -8
  376. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_hsvtorgb_color3.osl +0 -4
  377. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_hsvtorgb_color4.osl +0 -4
  378. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_image_color3.osl +0 -20
  379. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_image_color4.osl +0 -24
  380. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_image_float.osl +0 -20
  381. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_image_vector2.osl +0 -21
  382. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_image_vector3.osl +0 -19
  383. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_image_vector4.osl +0 -23
  384. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_luminance_color3.osl +0 -4
  385. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_luminance_color4.osl +0 -4
  386. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_mix_surfaceshader.osl +0 -6
  387. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_noise2d_float.osl +0 -5
  388. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_noise2d_vector2.osl +0 -5
  389. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_noise2d_vector3.osl +0 -5
  390. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_noise2d_vector4.osl +0 -5
  391. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_noise3d_float.osl +0 -5
  392. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_noise3d_vector2.osl +0 -5
  393. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_noise3d_vector3.osl +0 -5
  394. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_noise3d_vector4.osl +0 -5
  395. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_normalmap.osl +0 -24
  396. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_premult_color4.osl +0 -4
  397. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_rgbtohsv_color3.osl +0 -4
  398. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_rgbtohsv_color4.osl +0 -4
  399. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_rotate_vector2.osl +0 -7
  400. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_rotate_vector3.osl +0 -20
  401. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_surface_unlit.osl +0 -7
  402. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_time_float.osl +0 -6
  403. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_transformmatrix_vector2M3.osl +0 -6
  404. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_unpremult_color4.osl +0 -4
  405. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_worleynoise2d_float.osl +0 -4
  406. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_worleynoise2d_vector2.osl +0 -4
  407. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_worleynoise2d_vector3.osl +0 -4
  408. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_worleynoise3d_float.osl +0 -4
  409. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_worleynoise3d_vector2.osl +0 -4
  410. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/mx_worleynoise3d_vector3.osl +0 -4
  411. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/genosl/stdlib_genosl_impl.mtlx +0 -752
  412. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/stdlib_defs.mtlx +0 -4942
  413. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/stdlib/stdlib_ng.mtlx +0 -6232
  414. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/targets/essl.mtlx +0 -14
  415. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/targets/genglsl.mtlx +0 -14
  416. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/targets/genmdl.mtlx +0 -14
  417. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/targets/genmsl.mtlx +0 -14
  418. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/libraries/targets/genosl.mtlx +0 -14
  419. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/plugInfo.json +0 -58
  420. package/staging_area/Blender/blender.shared/usd/usdMtlx/resources/usdMtlx/schema.usda +0 -42
  421. package/staging_area/Blender/blender.shared/usd/usdPhysics/resources/generatedSchema.usda +0 -926
  422. package/staging_area/Blender/blender.shared/usd/usdPhysics/resources/plugInfo.json +0 -215
  423. package/staging_area/Blender/blender.shared/usd/usdPhysics/resources/usdPhysics/schema.usda +0 -879
  424. package/staging_area/Blender/blender.shared/usd/usdPhysicsValidators/resources/plugInfo.json +0 -54
  425. package/staging_area/Blender/blender.shared/usd/usdProc/resources/generatedSchema.usda +0 -57
  426. package/staging_area/Blender/blender.shared/usd/usdProc/resources/plugInfo.json +0 -29
  427. package/staging_area/Blender/blender.shared/usd/usdProc/resources/usdProc/schema.usda +0 -45
  428. package/staging_area/Blender/blender.shared/usd/usdProcImaging/resources/plugInfo.json +0 -22
  429. package/staging_area/Blender/blender.shared/usd/usdRender/resources/generatedSchema.usda +0 -335
  430. package/staging_area/Blender/blender.shared/usd/usdRender/resources/plugInfo.json +0 -80
  431. package/staging_area/Blender/blender.shared/usd/usdRender/resources/usdRender/schema.usda +0 -436
  432. package/staging_area/Blender/blender.shared/usd/usdRi/resources/generatedSchema.usda +0 -38
  433. package/staging_area/Blender/blender.shared/usd/usdRi/resources/plugInfo.json +0 -51
  434. package/staging_area/Blender/blender.shared/usd/usdRi/resources/usdRi/schema.usda +0 -157
  435. package/staging_area/Blender/blender.shared/usd/usdRiPxrImaging/resources/plugInfo.json +0 -53
  436. package/staging_area/Blender/blender.shared/usd/usdSemantics/resources/generatedSchema.usda +0 -19
  437. package/staging_area/Blender/blender.shared/usd/usdSemantics/resources/plugInfo.json +0 -29
  438. package/staging_area/Blender/blender.shared/usd/usdSemantics/resources/usdSemantics/schema.usda +0 -36
  439. package/staging_area/Blender/blender.shared/usd/usdShade/resources/generatedSchema.usda +0 -112
  440. package/staging_area/Blender/blender.shared/usd/usdShade/resources/plugInfo.json +0 -145
  441. package/staging_area/Blender/blender.shared/usd/usdShade/resources/usdShade/schema.usda +0 -595
  442. package/staging_area/Blender/blender.shared/usd/usdShadeValidators/resources/plugInfo.json +0 -63
  443. package/staging_area/Blender/blender.shared/usd/usdShaders/resources/plugInfo.json +0 -22
  444. package/staging_area/Blender/blender.shared/usd/usdShaders/resources/shaders/previewSurface.glslfx +0 -498
  445. package/staging_area/Blender/blender.shared/usd/usdShaders/resources/shaders/primvarReader.glslfx +0 -18
  446. package/staging_area/Blender/blender.shared/usd/usdShaders/resources/shaders/shaderDefs.usda +0 -475
  447. package/staging_area/Blender/blender.shared/usd/usdShaders/resources/shaders/transform2d.glslfx +0 -18
  448. package/staging_area/Blender/blender.shared/usd/usdShaders/resources/shaders/uvTexture.glslfx +0 -18
  449. package/staging_area/Blender/blender.shared/usd/usdSkel/resources/generatedSchema.usda +0 -249
  450. package/staging_area/Blender/blender.shared/usd/usdSkel/resources/plugInfo.json +0 -86
  451. package/staging_area/Blender/blender.shared/usd/usdSkel/resources/usdSkel/schema.usda +0 -289
  452. package/staging_area/Blender/blender.shared/usd/usdSkelImaging/resources/plugInfo.json +0 -57
  453. package/staging_area/Blender/blender.shared/usd/usdSkelImaging/resources/shaders/skinning.glslfx +0 -265
  454. package/staging_area/Blender/blender.shared/usd/usdSkelValidators/resources/plugInfo.json +0 -27
  455. package/staging_area/Blender/blender.shared/usd/usdUI/resources/generatedSchema.usda +0 -123
  456. package/staging_area/Blender/blender.shared/usd/usdUI/resources/plugInfo.json +0 -62
  457. package/staging_area/Blender/blender.shared/usd/usdUI/resources/usdUI/schema.usda +0 -288
  458. package/staging_area/Blender/blender.shared/usd/usdUtilsValidators/resources/plugInfo.json +0 -45
  459. package/staging_area/Blender/blender.shared/usd/usdValidation/resources/plugInfo.json +0 -24
  460. package/staging_area/Blender/blender.shared/usd/usdVol/resources/generatedSchema.usda +0 -340
  461. package/staging_area/Blender/blender.shared/usd/usdVol/resources/plugInfo.json +0 -73
  462. package/staging_area/Blender/blender.shared/usd/usdVol/resources/usdVol/schema.usda +0 -144
  463. package/staging_area/Blender/blender.shared/usd/usdVolImaging/resources/plugInfo.json +0 -29
@@ -1,2775 +0,0 @@
1
- #usda 1.0
2
- (
3
- "This file describes the USD Geometric schemata for code generation."
4
- subLayers = [
5
- @usd/schema.usda@
6
- ]
7
- )
8
-
9
- over "GLOBAL" (
10
- customData = {
11
- string libraryName = "usdGeom"
12
- string libraryPath = "pxr/usd/usdGeom"
13
- # string libraryPrefix = "UsdGeom"
14
- # string tokensPrefix = "UsdGeom"
15
- bool useLiteralIdentifier = 0
16
- dictionary libraryTokens = {
17
- dictionary interpolation = {
18
- string doc = """UsdGeomPrimvar - How a Primvar interpolates
19
- across a primitive; equivalent to RenderMan's \\ref Usd_InterpolationVals "class specifier" """
20
- }
21
- dictionary elementSize = {
22
- string doc = """UsdGeomPrimvar - The number of values in the
23
- value array that must be aggregated for each element on the
24
- primitive."""
25
- }
26
- dictionary unauthoredValuesIndex = {
27
- string doc = """UsdGeomPrimvar - The index that represents
28
- unauthored values in the indices array of an indexed primvar."""
29
- }
30
- dictionary constant ={
31
- string doc = """Possible value for UsdGeomPrimvar::SetInterpolation.
32
- Default value for UsdGeomPrimvar::GetInterpolation. One value
33
- remains constant over the entire surface primitive."""
34
- }
35
- dictionary uniform = {
36
- string doc = """Possible value for UsdGeomPrimvar::SetInterpolation.
37
- One value remains constant for each uv patch segment of the
38
- surface primitive (which is a \\em face for meshes)."""
39
- }
40
- dictionary varying = {
41
- string doc = """Possible value for UsdGeomPrimvar::SetInterpolation.
42
- Four values are interpolated over each uv patch segment of the
43
- surface. Bilinear interpolation is used for interpolation
44
- between the four values."""
45
- }
46
- dictionary vertex = {
47
- string doc = """Possible value for UsdGeomPrimvar::SetInterpolation.
48
- Values are interpolated between each vertex in the surface
49
- primitive. The basis function of the surface is used for
50
- interpolation between vertices."""
51
- }
52
- dictionary faceVarying = {
53
- string doc = """Possible value for UsdGeomPrimvar::SetInterpolation.
54
- For polygons and subdivision surfaces, four values are
55
- interpolated over each face of the mesh. Bilinear interpolation
56
- is used for interpolation between the four values."""
57
- }
58
- dictionary upAxis = {
59
- string doc = """Stage-level metadata that encodes a scene's
60
- orientation as a token whose value can be "Y" or "Z"."""
61
- }
62
- dictionary metersPerUnit = {
63
- string doc = """Stage-level metadata that encodes a scene's
64
- linear unit of measure as meters per encoded unit."""
65
- }
66
- dictionary partition = {
67
- string doc = """A type of family of GeomSubsets. It implies
68
- that every element appears exacly once in only one of the
69
- subsets in the family."""
70
- }
71
- dictionary nonOverlapping = {
72
- string doc = """A type of family of GeomSubsets. It implies that
73
- the elements in the various subsets belonging to the family are
74
- mutually exclusive, i.e., an element that appears in one
75
- subset may not belong to any other subset in the family."""
76
- }
77
- dictionary unrestricted = {
78
- string doc = """A type of family of GeomSubsets. It implies that
79
- there are no restrictions w.r.t. the membership of elements in
80
- the subsets. There could be overlapping members in subsets
81
- belonging to the family and the union of all subsets in the
82
- family may not contain all the elements."""
83
- }
84
- dictionary hermite = {
85
- string doc = """A deprecated basis token for
86
- UsdGeomBasisCurves. Consumers of USD should transition
87
- to using the UsdGeomHermiteCurves schema."""
88
- }
89
- dictionary power = {
90
- string doc = """A deprecated basis token for
91
- UsdGeomBasisCurves."""
92
- }
93
- }
94
- }
95
- )
96
- {
97
- }
98
-
99
- class "Imageable" (
100
- inherits = </Typed>
101
- doc = """Base class for all prims that may require rendering or
102
- visualization of some sort. The primary attributes of Imageable
103
- are \\em visibility and \\em purpose, which each provide instructions for
104
- what geometry should be included for processing by rendering and other
105
- computations.
106
-
107
- \\deprecated Imageable also provides API for accessing primvars, which
108
- has been moved to the UsdGeomPrimvarsAPI schema, because primvars can now
109
- be applied on non-Imageable prim types. This API is planned
110
- to be removed, UsdGeomPrimvarsAPI should be used directly instead."""
111
- customData = {
112
- string extraIncludes = """
113
- #include "pxr/base/gf/bbox3d.h"
114
- #include "pxr/usd/usdGeom/primvar.h" """
115
- }
116
- ) {
117
- token visibility = "inherited" (
118
- allowedTokens = ["inherited", "invisible"]
119
- doc = """Visibility is meant to be the simplest form of "pruning"
120
- visibility that is supported by most DCC apps. Visibility is
121
- animatable, allowing a sub-tree of geometry to be present for some
122
- segment of a shot, and absent from others; unlike the action of
123
- deactivating geometry prims, invisible geometry is still
124
- available for inspection, for positioning, for defining volumes, etc."""
125
- )
126
-
127
- uniform token purpose = "default" (
128
- allowedTokens = ["default", "render", "proxy", "guide"]
129
- doc = """Purpose is a classification of geometry into categories that
130
- can each be independently included or excluded from traversals of prims
131
- on a stage, such as rendering or bounding-box computation traversals.
132
-
133
- See \\ref UsdGeom_ImageablePurpose for more detail about how
134
- \\em purpose is computed and used."""
135
- )
136
- rel proxyPrim (
137
- doc = """The \\em proxyPrim relationship allows us to link a
138
- prim whose \\em purpose is "render" to its (single target)
139
- purpose="proxy" prim. This is entirely optional, but can be
140
- useful in several scenarios:
141
-
142
- \\li In a pipeline that does pruning (for complexity management)
143
- by deactivating prims composed from asset references, when we
144
- deactivate a purpose="render" prim, we will be able to discover
145
- and additionally deactivate its associated purpose="proxy" prim,
146
- so that preview renders reflect the pruning accurately.
147
-
148
- \\li DCC importers may be able to make more aggressive optimizations
149
- for interactive processing and display if they can discover the proxy
150
- for a given render prim.
151
-
152
- \\li With a little more work, a Hydra-based application will be able
153
- to map a picked proxy prim back to its render geometry for selection.
154
-
155
- \\note It is only valid to author the proxyPrim relationship on
156
- prims whose purpose is "render"."""
157
- )
158
- }
159
-
160
- class "VisibilityAPI"
161
- (
162
- inherits = </APISchemaBase>
163
- customData = {
164
- token[] apiSchemaCanOnlyApplyTo = [
165
- "Imageable"
166
- ]
167
- }
168
- doc = """
169
- UsdGeomVisibilityAPI introduces properties that can be used to author
170
- visibility opinions.
171
-
172
- \\note
173
- Currently, this schema only introduces the attributes that are used to
174
- control purpose visibility. Later, this schema will define _all_
175
- visibility-related properties and UsdGeomImageable will no longer define
176
- those properties.
177
-
178
- The purpose visibility attributes added by this schema,
179
- _guideVisibility_, _proxyVisibility_, and _renderVisibility_ can each be
180
- used to control visibility for geometry of the corresponding purpose
181
- values, with the overall _visibility_ attribute acting as an
182
- override. I.e., if _visibility_ evaluates to "invisible", purpose
183
- visibility is invisible; otherwise, purpose visibility is determined by
184
- the corresponding purpose visibility attribute.
185
-
186
- Note that the behavior of _guideVisibility_ is subtly different from the
187
- _proxyVisibility_ and _renderVisibility_ attributes, in that "guide"
188
- purpose visibility always evaluates to either "invisible" or "visible",
189
- whereas the other attributes may yield computed values of "inherited" if
190
- there is no authored opinion on the attribute or inherited from an
191
- ancestor. This is motivated by the fact that, in Pixar"s user workflows,
192
- we have never found a need to have all guides visible in a scene by
193
- default, whereas we do find that flexibility useful for "proxy" and
194
- "render" geometry.
195
-
196
- This schema can only be applied to UsdGeomImageable prims. The
197
- UseGeomImageable schema provides API for computing the purpose visibility
198
- values that result from the attributes introduced by this schema.
199
- """
200
- )
201
- {
202
- uniform token guideVisibility = "invisible" (
203
- allowedTokens = ["inherited", "invisible", "visible"]
204
- doc = """
205
- This attribute controls visibility for geometry with purpose "guide".
206
-
207
- Unlike overall _visibility_, _guideVisibility_ is uniform, and
208
- therefore cannot be animated.
209
-
210
- Also unlike overall _visibility_, _guideVisibility_ is tri-state, in
211
- that a descendant with an opinion of "visible" overrides an ancestor
212
- opinion of "invisible".
213
-
214
- The _guideVisibility_ attribute works in concert with the overall
215
- _visibility_ attribute: The visibility of a prim with purpose "guide"
216
- is determined by the inherited values it receives for the _visibility_
217
- and _guideVisibility_ attributes. If _visibility_ evaluates to
218
- "invisible", the prim is invisible. If _visibility_ evaluates to
219
- "inherited" and _guideVisibility_ evaluates to "visible", then the
220
- prim is visible. __Otherwise, it is invisible.__
221
- """
222
- )
223
-
224
- uniform token proxyVisibility = "inherited" (
225
- allowedTokens = ["inherited", "invisible", "visible"]
226
- doc = """
227
- This attribute controls visibility for geometry with purpose "proxy".
228
-
229
- Unlike overall _visibility_, _proxyVisibility_ is uniform, and
230
- therefore cannot be animated.
231
-
232
- Also unlike overall _visibility_, _proxyVisibility_ is tri-state, in
233
- that a descendant with an opinion of "visible" overrides an ancestor
234
- opinion of "invisible".
235
-
236
- The _proxyVisibility_ attribute works in concert with the overall
237
- _visibility_ attribute: The visibility of a prim with purpose "proxy"
238
- is determined by the inherited values it receives for the _visibility_
239
- and _proxyVisibility_ attributes. If _visibility_ evaluates to
240
- "invisible", the prim is invisible. If _visibility_ evaluates to
241
- "inherited" then: If _proxyVisibility_ evaluates to "visible", then
242
- the prim is visible; if _proxyVisibility_ evaluates to "invisible",
243
- then the prim is invisible; if _proxyVisibility_ evaluates to
244
- "inherited", then the prim may either be visible or invisible,
245
- depending on a fallback value determined by the calling context.
246
- """
247
- )
248
-
249
- uniform token renderVisibility = "inherited" (
250
- allowedTokens = ["inherited", "invisible", "visible"]
251
- doc = """
252
- This attribute controls visibility for geometry with purpose
253
- "render".
254
-
255
- Unlike overall _visibility_, _renderVisibility_ is uniform, and
256
- therefore cannot be animated.
257
-
258
- Also unlike overall _visibility_, _renderVisibility_ is tri-state, in
259
- that a descendant with an opinion of "visible" overrides an ancestor
260
- opinion of "invisible".
261
-
262
- The _renderVisibility_ attribute works in concert with the overall
263
- _visibility_ attribute: The visibility of a prim with purpose "render"
264
- is determined by the inherited values it receives for the _visibility_
265
- and _renderVisibility_ attributes. If _visibility_ evaluates to
266
- "invisible", the prim is invisible. If _visibility_ evaluates to
267
- "inherited" then: If _renderVisibility_ evaluates to "visible", then
268
- the prim is visible; if _renderVisibility_ evaluates to "invisible",
269
- then the prim is invisible; if _renderVisibility_ evaluates to
270
- "inherited", then the prim may either be visible or invisible,
271
- depending on a fallback value determined by the calling context.
272
- """
273
- )
274
- }
275
-
276
- class "PrimvarsAPI" (
277
- inherits = </APISchemaBase>
278
- doc = """UsdGeomPrimvarsAPI encodes geometric "primitive variables",
279
- as UsdGeomPrimvar, which interpolate across a primitive's topology,
280
- can override shader inputs, and inherit down namespace.
281
-
282
- \\section usdGeom_PrimvarFetchingAPI Which Method to Use to Retrieve Primvars
283
-
284
- While creating primvars is unambiguous (CreatePrimvar()), there are quite
285
- a few methods available for retrieving primvars, making it potentially
286
- confusing knowing which one to use. Here are some guidelines:
287
-
288
- \\li If you are populating a GUI with the primvars already available for
289
- authoring values on a prim, use GetPrimvars().
290
- \\li If you want all of the "useful" (e.g. to a renderer) primvars
291
- available at a prim, including those inherited from ancestor prims, use
292
- FindPrimvarsWithInheritance(). Note that doing so individually for many
293
- prims will be inefficient.
294
- \\li To find a particular primvar defined directly on a prim, which may
295
- or may not provide a value, use GetPrimvar().
296
- \\li To find a particular primvar defined on a prim or inherited from
297
- ancestors, which may or may not provide a value, use
298
- FindPrimvarWithInheritance().
299
- \\li To *efficiently* query for primvars using the overloads of
300
- FindPrimvarWithInheritance() and FindPrimvarsWithInheritance(), one
301
- must first cache the results of FindIncrementallyInheritablePrimvars() for
302
- each non-leaf prim on the stage. """
303
- customData = {
304
- token apiSchemaType = "nonApplied"
305
- string extraIncludes = """
306
- #include "pxr/usd/usdGeom/primvar.h" """
307
- }
308
- ) {
309
- }
310
-
311
- class "Xformable" (
312
- inherits = </Imageable>
313
- customData = {
314
- string extraIncludes = """
315
- #include "pxr/usd/usdGeom/xformOp.h"
316
- #include <vector> """
317
- }
318
- doc = """Base class for all transformable prims, which allows arbitrary
319
- sequences of component affine transformations to be encoded.
320
-
321
- \\note
322
- You may find it useful to review \\ref UsdGeom_LinAlgBasics while reading
323
- this class description.
324
-
325
- <b>Supported Component Transformation Operations</b>
326
-
327
- UsdGeomXformable currently supports arbitrary sequences of the following
328
- operations, each of which can be encoded in an attribute of the proper
329
- shape in any supported precision:
330
- \\li translateX - 1D
331
- \\li translateY - 1D
332
- \\li translateZ - 1D
333
- \\li translate - 3D
334
- \\li scale - 3D
335
- \\li scaleX - 1D
336
- \\li scaleY - 1D
337
- \\li scaleZ - 1D
338
- \\li rotateX - 1D angle in degrees
339
- \\li rotateY - 1D angle in degrees
340
- \\li rotateZ - 1D angle in degrees
341
- \\li rotateABC - 3D where ABC can be any combination of the six principle
342
- Euler Angle sets: XYZ, XZY, YXZ, YZX, ZXY, ZYX. See
343
- \\ref usdGeom_rotationPackingOrder "note on rotation packing order"
344
- \\li orient - 4D (quaternion)
345
- \\li transform - 4x4D
346
-
347
- <b>Creating a Component Transformation</b>
348
-
349
- To add components to a UsdGeomXformable prim, simply call AddXformOp()
350
- with the desired op type, as enumerated in \\ref UsdGeomXformOp::Type,
351
- and the desired precision, which is one of \\ref UsdGeomXformOp::Precision.
352
- Optionally, you can also provide an "op suffix" for the operator that
353
- disambiguates it from other components of the same type on the same prim.
354
- Application-specific transform schemas can use the suffixes to fill a role
355
- similar to that played by AbcGeom::XformOp's "Hint" enums for their own
356
- round-tripping logic.
357
-
358
- We also provide specific "Add" API for each type, for clarity and
359
- conciseness, e.g. AddTranslateOp(), AddTranslateXOp(), AddRotateXYZOp() etc.
360
-
361
- AddXformOp() will return a UsdGeomXformOp object, which is a schema on a
362
- newly created UsdAttribute that provides convenience API for authoring
363
- and computing the component transformations. The UsdGeomXformOp can then
364
- be used to author any number of timesamples and default for the op.
365
-
366
- Each successive call to AddXformOp() adds an operator that will be applied
367
- "more locally" than the preceding operator, just as if we were pushing
368
- transforms onto a transformation stack - which is precisely what should
369
- happen when the operators are consumed by a reader.
370
-
371
- \\note
372
- If you can, please try to use the UsdGeomXformCommonAPI, which wraps
373
- the UsdGeomXformable with an interface in which Op creation is taken
374
- care of for you, and there is a much higher chance that the data you
375
- author will be importable without flattening into other DCC's, as it
376
- conforms to a fixed set of Scale-Rotate-Translate Ops.
377
-
378
- \\sa \\ref usdGeom_xformableExamples "Using the Authoring API"
379
-
380
- <b>Data Encoding and Op Ordering</b>
381
-
382
- Because there is no "fixed schema" of operations, all of the attributes
383
- that encode transform operations are dynamic, and are scoped in
384
- the namespace "xformOp". The second component of an attribute's name provides
385
- the \\em type of operation, as listed above. An "xformOp" attribute can
386
- have additional namespace components derived from the \\em opSuffix argument
387
- to the AddXformOp() suite of methods, which provides a preferred way of
388
- naming the ops such that we can have multiple "translate" ops with unique
389
- attribute names. For example, in the attribute named
390
- "xformOp:translate:maya:pivot", "translate" is the type of operation and
391
- "maya:pivot" is the suffix.
392
-
393
- The following ordered list of attribute declarations in usda
394
- define a basic Scale-Rotate-Translate with XYZ Euler angles, wherein the
395
- translation is double-precision, and the remainder of the ops are single,
396
- in which we will:
397
-
398
- <ol>
399
- <li> Scale by 2.0 in each dimension
400
- <li> Rotate about the X, Y, and Z axes by 30, 60, and 90 degrees, respectively
401
- <li> Translate by 100 units in the Y direction
402
- </ol>
403
-
404
- \\code
405
- float3 xformOp:rotateXYZ = (30, 60, 90)
406
- float3 xformOp:scale = (2, 2, 2)
407
- double3 xformOp:translate = (0, 100, 0)
408
- uniform token[] xformOpOrder = [ "xformOp:translate", "xformOp:rotateXYZ", "xformOp:scale" ]
409
- \\endcode
410
-
411
- The attributes appear in the dictionary order in which USD, by default,
412
- sorts them. To ensure the ops are recovered and evaluated in the correct
413
- order, the schema introduces the **xformOpOrder** attribute, which
414
- contains the names of the op attributes, in the precise sequence in which
415
- they should be pushed onto a transform stack. **Note** that the order is
416
- opposite to what you might expect, given the matrix algebra described in
417
- \\ref UsdGeom_LinAlgBasics. This also dictates order of op creation,
418
- since each call to AddXformOp() adds a new op to the end of the
419
- \\b xformOpOrder array, as a new "most-local" operation. See
420
- \\ref usdGeom_xformableExamples "Example 2 below" for C++ code that could
421
- have produced this USD.
422
-
423
- If it were important for the prim's rotations to be independently
424
- overridable, we could equivalently (at some performance cost) encode
425
- the transformation also like so:
426
- \\code
427
- float xformOp:rotateX = 30
428
- float xformOp:rotateY = 60
429
- float xformOp:rotateZ = 90
430
- float3 xformOp:scale = (2, 2, 2)
431
- double3 xformOp:translate = (0, 100, 0)
432
- uniform token[] xformOpOrder = [ "xformOp:translate", "xformOp:rotateZ", "xformOp:rotateY", "xformOp:rotateX", "xformOp:scale" ]
433
- \\endcode
434
-
435
- Again, note that although we are encoding an XYZ rotation, the three
436
- rotations appear in the **xformOpOrder** in the opposite order, with Z,
437
- followed, by Y, followed by X.
438
-
439
- Were we to add a Maya-style scalePivot to the above example, it might
440
- look like the following:
441
- \\code
442
- float3 xformOp:rotateXYZ = (30, 60, 90)
443
- float3 xformOp:scale = (2, 2, 2)
444
- double3 xformOp:translate = (0, 100, 0)
445
- double3 xformOp:translate:scalePivot
446
- uniform token[] xformOpOrder = [ "xformOp:translate", "xformOp:rotateXYZ", "xformOp:translate:scalePivot", "xformOp:scale" ]
447
- \\endcode
448
-
449
- <b>Paired "Inverted" Ops</b>
450
-
451
- We have been claiming that the ordered list of ops serves as a set
452
- of instructions to a transform stack, but you may have noticed in the last
453
- example that there is a missing operation - the pivot for the scale op
454
- needs to be applied in its inverse-form as a final (most local) op! In the
455
- AbcGeom::Xform schema, we would have encoded an actual "final" translation
456
- op whose value was authored by the exporter as the negation of the pivot's
457
- value. However, doing so would be brittle in USD, given that each op can
458
- be independently overridden, and the constraint that one attribute must be
459
- maintained as the negation of the other in order for successful
460
- re-importation of the schema cannot be expressed in USD.
461
-
462
- Our solution leverages the **xformOpOrder** member of the schema, which,
463
- in addition to ordering the ops, may also contain one of two special
464
- tokens that address the paired op and "stack resetting" behavior.
465
-
466
- The "paired op" behavior is encoded as an "!invert!" prefix in
467
- \\b xformOpOrder, as the result of an AddXformOp(isInverseOp=True) call.
468
- The \\b xformOpOrder for the last example would look like:
469
- \\code
470
- uniform token[] xformOpOrder = [ "xformOp:translate", "xformOp:rotateXYZ", "xformOp:translate:scalePivot", "xformOp:scale", "!invert!xformOp:translate:scalePivot" ]
471
- \\endcode
472
-
473
- When asked for its value via UsdGeomXformOp::GetOpTransform(), an
474
- "inverted" Op (i.e. the "inverted" half of a set of paired Ops) will fetch
475
- the value of its paired attribute and return its negation. This works for
476
- all op types - an error will be issued if a "transform" type op is singular
477
- and cannot be inverted. When getting the authored value of an inverted op
478
- via UsdGeomXformOp::Get(), the raw, uninverted value of the associated
479
- attribute is returned.
480
-
481
- For the sake of robustness, <b>setting a value on an inverted op is disallowed.</b>
482
- Attempting to set a value on an inverted op will result in a coding error
483
- and no value being set.
484
-
485
- <b>Resetting the Transform Stack</b>
486
-
487
- The other special op/token that can appear in \\em xformOpOrder is
488
- \\em "!resetXformStack!", which, appearing as the first element of
489
- \\em xformOpOrder, indicates this prim should not inherit the transformation
490
- of its namespace parent. See SetResetXformStack()
491
-
492
- <b>Expected Behavior for "Missing" Ops</b>
493
-
494
- If an importer expects Scale-Rotate-Translate operations, but a prim
495
- has only translate and rotate ops authored, the importer should assume
496
- an identity scale. This allows us to optimize the data a bit, if only
497
- a few components of a very rich schema (like Maya's) are authored in the
498
- app.
499
-
500
- \\anchor usdGeom_xformableExamples
501
- <b>Using the C++ API</b>
502
-
503
- #1. Creating a simple transform matrix encoding
504
- \\snippet examples_usdGeom.cpp CreateMatrixWithDefault
505
-
506
- #2. Creating the simple SRT from the example above
507
- \\snippet examples_usdGeom.cpp CreateExampleSRT
508
-
509
- #3. Creating a parameterized SRT with pivot using UsdGeomXformCommonAPI
510
- \\snippet examples_usdGeom.cpp CreateSRTWithDefaults
511
-
512
- #4. Creating a rotate-only pivot transform with animated
513
- rotation and translation
514
- \\snippet examples_usdGeom.cpp CreateAnimatedTransform
515
-
516
- """
517
- ) {
518
-
519
- uniform token[] xformOpOrder (
520
- doc = """Encodes the sequence of transformation operations in the
521
- order in which they should be pushed onto a transform stack while
522
- visiting a UsdStage's prims in a graph traversal that will effect
523
- the desired positioning for this prim and its descendant prims.
524
-
525
- You should rarely, if ever, need to manipulate this attribute directly.
526
- It is managed by the AddXformOp(), SetResetXformStack(), and
527
- SetXformOpOrder(), and consulted by GetOrderedXformOps() and
528
- GetLocalTransformation()."""
529
- )
530
- }
531
-
532
- class Scope "Scope" (
533
- inherits = </Imageable>
534
- doc = """Scope is the simplest grouping primitive, and does not carry the
535
- baggage of transformability. Note that transforms should inherit down
536
- through a Scope successfully - it is just a guaranteed no-op from a
537
- transformability perspective."""
538
- ) {
539
- }
540
-
541
- class Xform "Xform" (
542
- inherits = </Xformable>
543
- doc = """Concrete prim schema for a transform, which implements Xformable """
544
- ) {
545
- }
546
-
547
- class "Boundable" (
548
- inherits = </Xformable>
549
- doc = """Boundable introduces the ability for a prim to persistently
550
- cache a rectilinear, local-space, extent.
551
-
552
- \\section UsdGeom_Boundable_Extent Why Extent and not Bounds ?
553
- Boundable introduces the notion of "extent", which is a cached computation
554
- of a prim's local-space 3D range for its resolved attributes <b>at the
555
- layer and time in which extent is authored</b>. We have found that with
556
- composed scene description, attempting to cache pre-computed bounds at
557
- interior prims in a scene graph is very fragile, given the ease with which
558
- one can author a single attribute in a stronger layer that can invalidate
559
- many authored caches - or with which a re-published, referenced asset can
560
- do the same.
561
-
562
- Therefore, we limit to precomputing (generally) leaf-prim extent, which
563
- avoids the need to read in large point arrays to compute bounds, and
564
- provides UsdGeomBBoxCache the means to efficiently compute and
565
- (session-only) cache intermediate bounds. You are free to compute and
566
- author intermediate bounds into your scenes, of course, which may work
567
- well if you have sufficient locks on your pipeline to guarantee that once
568
- authored, the geometry and transforms upon which they are based will
569
- remain unchanged, or if accuracy of the bounds is not an ironclad
570
- requisite.
571
-
572
- When intermediate bounds are authored on Boundable parents, the child prims
573
- will be pruned from BBox computation; the authored extent is expected to
574
- incorporate all child bounds."""
575
- )
576
- {
577
- # XXX: Note this is really a GfRange3f, which is not fully supported
578
- # in Vt I/O.
579
- float3[] extent (
580
- doc = """Extent is a three dimensional range measuring the geometric
581
- extent of the authored gprim in its own local space (i.e. its own
582
- transform not applied), \\em without accounting for any shader-induced
583
- displacement. If __any__ extent value has been authored for a given
584
- Boundable, then it should be authored at every timeSample at which
585
- geometry-affecting properties are authored, to ensure correct
586
- evaluation via ComputeExtent(). If __no__ extent value has been
587
- authored, then ComputeExtent() will call the Boundable's registered
588
- ComputeExtentFunction(), which may be expensive, which is why we
589
- strongly encourage proper authoring of extent.
590
- \\sa ComputeExtent()
591
- \\sa \\ref UsdGeom_Boundable_Extent.
592
-
593
- An authored extent on a prim which has children is expected to include
594
- the extent of all children, as they will be pruned from BBox computation
595
- during traversal."""
596
- )
597
- }
598
-
599
- class "Gprim" (
600
- inherits = </Boundable>
601
- doc = """Base class for all geometric primitives.
602
-
603
- Gprim encodes basic graphical properties such as \\em doubleSided and
604
- \\em orientation, and provides primvars for "display color" and "display
605
- opacity" that travel with geometry to be used as shader overrides. """
606
-
607
- ) {
608
- color3f[] primvars:displayColor (
609
- customData = {
610
- string apiName = "displayColor"
611
- }
612
- doc = """It is useful to have an "official" colorSet that can be used
613
- as a display or modeling color, even in the absence of any specified
614
- shader for a gprim. DisplayColor serves this role; because it is a
615
- UsdGeomPrimvar, it can also be used as a gprim override for any shader
616
- that consumes a \\em displayColor parameter."""
617
- )
618
-
619
- float[] primvars:displayOpacity (
620
- customData = {
621
- string apiName = "displayOpacity"
622
- }
623
- doc = """Companion to \\em displayColor that specifies opacity, broken
624
- out as an independent attribute rather than an rgba color, both so that
625
- each can be independently overridden, and because shaders rarely consume
626
- rgba parameters."""
627
- )
628
-
629
- uniform bool doubleSided = false (
630
- doc = """Although some renderers treat all parametric or polygonal
631
- surfaces as if they were effectively laminae with outward-facing
632
- normals on both sides, some renderers derive significant optimizations
633
- by considering these surfaces to have only a single outward side,
634
- typically determined by control-point winding order and/or
635
- \\em orientation. By doing so they can perform "backface culling" to
636
- avoid drawing the many polygons of most closed surfaces that face away
637
- from the viewer.
638
-
639
- However, it is often advantageous to model thin objects such as paper
640
- and cloth as single, open surfaces that must be viewable from both
641
- sides, always. Setting a gprim's \\em doubleSided attribute to
642
- \\c true instructs all renderers to disable optimizations such as
643
- backface culling for the gprim, and attempt (not all renderers are able
644
- to do so, but the USD reference GL renderer always will) to provide
645
- forward-facing normals on each side of the surface for lighting
646
- calculations."""
647
- )
648
-
649
- uniform token orientation = "rightHanded" (
650
- allowedTokens = ["rightHanded", "leftHanded"]
651
- doc = """Orientation specifies whether the gprim's surface normal
652
- should be computed using the right hand rule, or the left hand rule.
653
- Please see \\ref UsdGeom_WindingOrder for a deeper explanation and
654
- generalization of orientation to composed scenes with transformation
655
- hierarchies."""
656
- )
657
- }
658
-
659
- class Cube "Cube" (
660
- inherits = </Gprim>
661
- doc = """Defines a primitive rectilinear cube centered at the origin.
662
-
663
- The fallback values for Cube, Sphere, Cone, and Cylinder are set so that
664
- they all pack into the same volume/bounds."""
665
- customData = {
666
- dictionary extraPlugInfo = {
667
- bool implementsComputeExtent = true
668
- }
669
- }
670
- ) {
671
- double size = 2.0 (
672
- doc = """Indicates the length of each edge of the cube. If you
673
- author \\em size you must also author \\em extent.
674
-
675
- \\sa GetExtentAttr()"""
676
- )
677
-
678
- float3[] extent = [(-1.0, -1.0, -1.0), (1.0, 1.0, 1.0)] (
679
- doc = """Extent is re-defined on Cube only to provide a fallback value.
680
- \\sa UsdGeomGprim::GetExtentAttr()."""
681
- )
682
-
683
- }
684
-
685
- class Sphere "Sphere" (
686
- inherits = </Gprim>
687
- doc = """Defines a primitive sphere centered at the origin.
688
-
689
- The fallback values for Cube, Sphere, Cone, and Cylinder are set so that
690
- they all pack into the same volume/bounds."""
691
- customData = {
692
- dictionary extraPlugInfo = {
693
- bool implementsComputeExtent = true
694
- }
695
- }
696
- ) {
697
- double radius = 1.0 (
698
- doc = """Indicates the sphere's radius. If you
699
- author \\em radius you must also author \\em extent.
700
-
701
- \\sa GetExtentAttr()"""
702
- )
703
-
704
- float3[] extent = [(-1.0, -1.0, -1.0), (1.0, 1.0, 1.0)] (
705
- doc = """Extent is re-defined on Sphere only to provide a fallback
706
- value. \\sa UsdGeomGprim::GetExtentAttr()."""
707
- )
708
- }
709
-
710
- class Cylinder "Cylinder" (
711
- inherits = </Gprim>
712
- doc = """Defines a primitive cylinder with closed ends, centered at the
713
- origin, whose spine is along the specified \\em axis.
714
-
715
- The fallback values for Cube, Sphere, Cone, and Cylinder are set so that
716
- they all pack into the same volume/bounds."""
717
- customData = {
718
- dictionary extraPlugInfo = {
719
- bool implementsComputeExtent = true
720
- }
721
- }
722
- ) {
723
- double height = 2 (
724
- doc = """The size of the cylinder's spine along the specified
725
- \\em axis. If you author \\em height you must also author \\em extent.
726
-
727
- \\sa GetExtentAttr()"""
728
- )
729
- double radius = 1.0 (
730
- doc = """The radius of the cylinder. If you author \\em radius
731
- you must also author \\em extent.
732
-
733
- \\sa GetExtentAttr()"""
734
- )
735
- uniform token axis = "Z" (
736
- allowedTokens = ["X", "Y", "Z"]
737
- doc = """The axis along which the spine of the cylinder is aligned"""
738
- )
739
-
740
- float3[] extent = [(-1.0, -1.0, -1.0), (1.0, 1.0, 1.0)] (
741
- doc = """Extent is re-defined on Cylinder only to provide a fallback
742
- value. \\sa UsdGeomGprim::GetExtentAttr()."""
743
- )
744
- }
745
-
746
- class Capsule "Capsule" (
747
- inherits = </Gprim>
748
- doc = """Defines a primitive capsule, i.e. a cylinder capped by two half
749
- spheres, centered at the origin, whose spine is along the specified
750
- \\em axis.
751
- The spherical cap heights (sagitta) of the two endcaps are a function of
752
- the relative radii of the endcaps, such that cylinder tangent and sphere
753
- tangent are coincident and maintain C1 continuity."""
754
- customData = {
755
- dictionary extraPlugInfo = {
756
- bool implementsComputeExtent = true
757
- }
758
- }
759
- ) {
760
- double height = 1.0 (
761
- doc = """The length of the capsule's spine along the specified
762
- \\em axis excluding the size of the two half spheres, i.e.
763
- the length of the cylinder portion of the capsule.
764
- If you author \\em height you must also author \\em extent.
765
- \\sa GetExtentAttr()"""
766
- )
767
- double radius = 0.5 (
768
- doc = """The radius of the capsule. If you
769
- author \\em radius you must also author \\em extent.
770
-
771
- \\sa GetExtentAttr()"""
772
- )
773
- uniform token axis = "Z" (
774
- allowedTokens = ["X", "Y", "Z"]
775
- doc = """The axis along which the spine of the capsule is aligned"""
776
- )
777
-
778
- float3[] extent = [(-0.5, -0.5, -1.0), (0.5, 0.5, 1.0)] (
779
- doc = """Extent is re-defined on Capsule only to provide a fallback
780
- value. \\sa UsdGeomGprim::GetExtentAttr()."""
781
- )
782
- }
783
-
784
- class Cone "Cone" (
785
- inherits = </Gprim>
786
- doc = """Defines a primitive cone, centered at the origin, whose spine
787
- is along the specified \\em axis, with the apex of the cone pointing
788
- in the direction of the positive axis.
789
-
790
- The fallback values for Cube, Sphere, Cone, and Cylinder are set so that
791
- they all pack into the same volume/bounds."""
792
- customData = {
793
- dictionary extraPlugInfo = {
794
- bool implementsComputeExtent = true
795
- }
796
- }
797
- ) {
798
- double height = 2.0 (
799
- doc = """The length of the cone's spine along the specified
800
- \\em axis. If you author \\em height you must also author \\em extent.
801
-
802
- \\sa GetExtentAttr()"""
803
- )
804
- double radius = 1.0 (
805
- doc = """The radius of the cone. If you
806
- author \\em radius you must also author \\em extent.
807
-
808
- \\sa GetExtentAttr()"""
809
- )
810
- uniform token axis = "Z" (
811
- allowedTokens = ["X", "Y", "Z"]
812
- doc = """The axis along which the spine of the cone is aligned"""
813
- )
814
-
815
- float3[] extent = [(-1.0, -1.0, -1.0), (1.0, 1.0, 1.0)] (
816
- doc = """Extent is re-defined on Cone only to provide a fallback
817
- value. \\sa UsdGeomGprim::GetExtentAttr()."""
818
- )
819
- }
820
-
821
- class Cylinder_1 "Cylinder_1" (
822
- inherits = </Gprim>
823
- doc = """Defines a primitive cylinder with closed ends, centered at the
824
- origin, whose spine is along the specified \\em axis, with a pair of radii
825
- describing the size of the end points.
826
-
827
- The fallback values for Cube, Sphere, Cone, and Cylinder are set so that
828
- they all pack into the same volume/bounds."""
829
- customData = {
830
- dictionary extraPlugInfo = {
831
- bool implementsComputeExtent = true
832
- }
833
- }
834
- ) {
835
- double height = 2 (
836
- doc = """The length of the cylinder's spine along the specified
837
- \\em axis. If you author \\em height you must also author \\em extent.
838
-
839
- \\sa GetExtentAttr()"""
840
- )
841
- double radiusTop = 1.0 (
842
- doc = """The radius of the top of the cylinder - i.e. the face located
843
- along the positive \\em axis. If you author \\em radiusTop you must also
844
- author \\em extent.
845
-
846
- \\sa GetExtentAttr()"""
847
- )
848
- double radiusBottom = 1.0 (
849
- doc = """The radius of the bottom of the cylinder - i.e. the face
850
- point located along the negative \\em axis. If you author
851
- \\em radiusBottom you must also author \\em extent.
852
-
853
- \\sa GetExtentAttr()"""
854
- )
855
- uniform token axis = "Z" (
856
- allowedTokens = ["X", "Y", "Z"]
857
- doc = """The axis along which the spine of the cylinder is aligned"""
858
- )
859
-
860
- float3[] extent = [(-1.0, -1.0, -1.0), (1.0, 1.0, 1.0)] (
861
- doc = """Extent is re-defined on Cylinder only to provide a fallback
862
- value. \\sa UsdGeomGprim::GetExtentAttr()."""
863
- )
864
- }
865
-
866
- class Capsule_1 "Capsule_1" (
867
- inherits = </Gprim>
868
- doc = """Defines a primitive capsule, i.e. a cylinder capped by two half
869
- spheres, with potentially different radii, centered at the origin, and whose
870
- spine is along the specified \\em axis.
871
- The spherical cap heights (sagitta) of the two endcaps are a function of
872
- the relative radii of the endcaps, such that cylinder tangent and sphere
873
- tangent are coincident and maintain C1 continuity."""
874
- customData = {
875
- dictionary extraPlugInfo = {
876
- bool implementsComputeExtent = true
877
- }
878
- }
879
- ) {
880
- double height = 1.0 (
881
- doc = """The length of the capsule's spine along the specified
882
- \\em axis excluding the size of the two half spheres, i.e.
883
- the length of the cylinder portion of the capsule.
884
- If you author \\em height you must also author \\em extent.
885
- \\sa GetExtentAttr()"""
886
- )
887
- double radiusTop = 0.5 (
888
- doc = """The radius of the capping sphere at the top of the capsule -
889
- i.e. the sphere in the direction of the positive \\em axis. If you
890
- author \\em radius you must also author \\em extent.
891
-
892
- \\sa GetExtentAttr()"""
893
- )
894
- double radiusBottom = 0.5 (
895
- doc = """The radius of the capping sphere at the bottom of the capsule -
896
- i.e. the sphere located in the direction of the negative \\em axis. If
897
- you author \\em radius you must also author \\em extent.
898
-
899
- \\sa GetExtentAttr()"""
900
- )
901
- uniform token axis = "Z" (
902
- allowedTokens = ["X", "Y", "Z"]
903
- doc = """The axis along which the spine of the capsule is aligned"""
904
- )
905
-
906
- float3[] extent = [(-0.5, -0.5, -1.0), (0.5, 0.5, 1.0)] (
907
- doc = """Extent is re-defined on Capsule only to provide a fallback
908
- value. \\sa UsdGeomGprim::GetExtentAttr()."""
909
- )
910
- }
911
-
912
- class Plane "Plane" (
913
- inherits = </Gprim>
914
- doc = """Defines a primitive plane, centered at the origin, and is defined by
915
- a cardinal axis, width, and length. The plane is double-sided by default.
916
-
917
- The axis of width and length are perpendicular to the plane's \\em axis:
918
-
919
- axis | width | length
920
- ----- | ------ | -------
921
- X | z-axis | y-axis
922
- Y | x-axis | z-axis
923
- Z | x-axis | y-axis
924
-
925
- """
926
- customData = {
927
- dictionary extraPlugInfo = {
928
- bool implementsComputeExtent = true
929
- }
930
- }
931
- ) {
932
- uniform bool doubleSided = true (
933
- doc = """Planes are double-sided by default. Clients may also support
934
- single-sided planes.
935
-
936
- \\sa UsdGeomGprim::GetDoubleSidedAttr()"""
937
- )
938
- double width = 2.0 (
939
- doc = """The width of the plane, which aligns to the x-axis when \\em axis is
940
- 'Z' or 'Y', or to the z-axis when \\em axis is 'X'. If you author \\em width
941
- you must also author \\em extent.
942
-
943
- \\sa UsdGeomGprim::GetExtentAttr()"""
944
- )
945
- double length = 2.0 (
946
- doc = """The length of the plane, which aligns to the y-axis when \\em axis is
947
- 'Z' or 'X', or to the z-axis when \\em axis is 'Y'. If you author \\em length
948
- you must also author \\em extent.
949
-
950
- \\sa UsdGeomGprim::GetExtentAttr()"""
951
- )
952
- uniform token axis = "Z" (
953
- allowedTokens = ["X", "Y", "Z"]
954
- doc = """The axis along which the surface of the plane is aligned. When set
955
- to 'Z' the plane is in the xy-plane; when \\em axis is 'X' the plane is in
956
- the yz-plane, and when \\em axis is 'Y' the plane is in the xz-plane.
957
-
958
- \\sa UsdGeomGprim::GetAxisAttr()."""
959
- )
960
- float3[] extent = [(-1.0, -1.0, 0.0), (1.0, 1.0, 0.0)] (
961
- doc = """Extent is re-defined on Plane only to provide a fallback
962
- value. \\sa UsdGeomGprim::GetExtentAttr()."""
963
- )
964
- }
965
-
966
- class "PointBased" (
967
- doc = """Base class for all UsdGeomGprims that possess points,
968
- providing common attributes such as normals and velocities."""
969
-
970
- inherits = </Gprim>
971
- customData = {
972
- dictionary extraPlugInfo = {
973
- bool implementsComputeExtent = true
974
- }
975
- }
976
- ) {
977
- # positional
978
- point3f[] points (
979
- doc = """The primary geometry attribute for all PointBased
980
- primitives, describes points in (local) space."""
981
- )
982
-
983
- vector3f[] velocities (
984
- doc = """If provided, 'velocities' should be used by renderers to
985
-
986
- compute positions between samples for the 'points' attribute, rather
987
- than interpolating between neighboring 'points' samples. This is the
988
- only reasonable means of computing motion blur for topologically
989
- varying PointBased primitives. It follows that the length of each
990
- 'velocities' sample must match the length of the corresponding
991
- 'points' sample. Velocity is measured in position units per second,
992
- as per most simulation software. To convert to position units per
993
- UsdTimeCode, divide by UsdStage::GetTimeCodesPerSecond().
994
-
995
- See also \\ref UsdGeom_VelocityInterpolation ."""
996
- )
997
-
998
- vector3f[] accelerations (
999
- doc = """If provided, 'accelerations' should be used with
1000
- velocities to compute positions between samples for the 'points'
1001
- attribute rather than interpolating between neighboring 'points'
1002
- samples. Acceleration is measured in position units per second-squared.
1003
- To convert to position units per squared UsdTimeCode, divide by the
1004
- square of UsdStage::GetTimeCodesPerSecond()."""
1005
- )
1006
-
1007
- # shaping
1008
- normal3f[] normals (
1009
- doc = """Provide an object-space orientation for individual points,
1010
- which, depending on subclass, may define a surface, curve, or free
1011
- points. Note that 'normals' should not be authored on any Mesh that
1012
- is subdivided, since the subdivision algorithm will define its own
1013
- normals. 'normals' is not a generic primvar, but the number of elements
1014
- in this attribute will be determined by its 'interpolation'. See
1015
- \\ref SetNormalsInterpolation() . If 'normals' and 'primvars:normals'
1016
- are both specified, the latter has precedence."""
1017
- )
1018
- }
1019
-
1020
- class Mesh "Mesh" (
1021
- inherits = </PointBased>
1022
- customData = {
1023
- string extraIncludes = """
1024
- #include "pxr/usd/usd/timeCode.h" """
1025
- }
1026
- doc="""Encodes a mesh with optional subdivision properties and features.
1027
-
1028
- As a point-based primitive, meshes are defined in terms of points that
1029
- are connected into edges and faces. Many references to meshes use the
1030
- term 'vertex' in place of or interchangeably with 'points', while some
1031
- use 'vertex' to refer to the 'face-vertices' that define a face. To
1032
- avoid confusion, the term 'vertex' is intentionally avoided in favor of
1033
- 'points' or 'face-vertices'.
1034
-
1035
- The connectivity between points, edges and faces is encoded using a
1036
- common minimal topological description of the faces of the mesh. Each
1037
- face is defined by a set of face-vertices using indices into the Mesh's
1038
- _points_ array (inherited from UsdGeomPointBased) and laid out in a
1039
- single linear _faceVertexIndices_ array for efficiency. A companion
1040
- _faceVertexCounts_ array provides, for each face, the number of
1041
- consecutive face-vertices in _faceVertexIndices_ that define the face.
1042
- No additional connectivity information is required or constructed, so
1043
- no adjacency or neighborhood queries are available.
1044
-
1045
- A key property of this mesh schema is that it encodes both subdivision
1046
- surfaces and simpler polygonal meshes. This is achieved by varying the
1047
- _subdivisionScheme_ attribute, which is set to specify Catmull-Clark
1048
- subdivision by default, so polygonal meshes must always be explicitly
1049
- declared. The available subdivision schemes and additional subdivision
1050
- features encoded in optional attributes conform to the feature set of
1051
- OpenSubdiv
1052
- (https://graphics.pixar.com/opensubdiv/docs/subdivision_surfaces.html).
1053
-
1054
- \\anchor UsdGeom_Mesh_Primvars
1055
- __A Note About Primvars__
1056
-
1057
- The following list clarifies the number of elements for and the
1058
- interpolation behavior of the different primvar interpolation types
1059
- for meshes:
1060
-
1061
- - __constant__: One element for the entire mesh; no interpolation.
1062
- - __uniform__: One element for each face of the mesh; elements are
1063
- typically not interpolated but are inherited by other faces derived
1064
- from a given face (via subdivision, tessellation, etc.).
1065
- - __varying__: One element for each point of the mesh;
1066
- interpolation of point data is always linear.
1067
- - __vertex__: One element for each point of the mesh;
1068
- interpolation of point data is applied according to the
1069
- _subdivisionScheme_ attribute.
1070
- - __faceVarying__: One element for each of the face-vertices that
1071
- define the mesh topology; interpolation of face-vertex data may
1072
- be smooth or linear, according to the _subdivisionScheme_ and
1073
- _faceVaryingLinearInterpolation_ attributes.
1074
-
1075
- Primvar interpolation types and related utilities are described more
1076
- generally in \\ref Usd_InterpolationVals.
1077
-
1078
- \\anchor UsdGeom_Mesh_Normals
1079
- __A Note About Normals__
1080
-
1081
- Normals should not be authored on a subdivision mesh, since subdivision
1082
- algorithms define their own normals. They should only be authored for
1083
- polygonal meshes (_subdivisionScheme_ = "none").
1084
-
1085
- The _normals_ attribute inherited from UsdGeomPointBased is not a generic
1086
- primvar, but the number of elements in this attribute will be determined by
1087
- its _interpolation_. See \\ref UsdGeomPointBased::GetNormalsInterpolation() .
1088
- If _normals_ and _primvars:normals_ are both specified, the latter has
1089
- precedence. If a polygonal mesh specifies __neither__ _normals_ nor
1090
- _primvars:normals_, then it should be treated and rendered as faceted,
1091
- with no attempt to compute smooth normals.
1092
-
1093
- The normals generated for smooth subdivision schemes, e.g. Catmull-Clark
1094
- and Loop, will likewise be smooth, but others, e.g. Bilinear, may be
1095
- discontinuous between faces and/or within non-planar irregular faces."""
1096
- ) {
1097
- #
1098
- # Common Properties
1099
- #
1100
- int[] faceVertexIndices (
1101
- doc = """Flat list of the index (into the _points_ attribute) of each
1102
- vertex of each face in the mesh. If this attribute has more than
1103
- one timeSample, the mesh is considered to be topologically varying."""
1104
- )
1105
-
1106
- int[] faceVertexCounts (
1107
- doc = """Provides the number of vertices in each face of the mesh,
1108
- which is also the number of consecutive indices in _faceVertexIndices_
1109
- that define the face. The length of this attribute is the number of
1110
- faces in the mesh. If this attribute has more than
1111
- one timeSample, the mesh is considered to be topologically varying."""
1112
- )
1113
-
1114
- #
1115
- # Subdiv Properties
1116
- #
1117
-
1118
- uniform token subdivisionScheme = "catmullClark" (
1119
- allowedTokens = ["catmullClark", "loop", "bilinear", "none"]
1120
- doc = """The subdivision scheme to be applied to the surface.
1121
- Valid values are:
1122
-
1123
- - __catmullClark__: The default, Catmull-Clark subdivision; preferred
1124
- for quad-dominant meshes (generalizes B-splines); interpolation
1125
- of point data is smooth (non-linear)
1126
- - __loop__: Loop subdivision; preferred for purely triangular meshes;
1127
- interpolation of point data is smooth (non-linear)
1128
- - __bilinear__: Subdivision reduces all faces to quads (topologically
1129
- similar to "catmullClark"); interpolation of point data is bilinear
1130
- - __none__: No subdivision, i.e. a simple polygonal mesh; interpolation
1131
- of point data is linear
1132
-
1133
- Polygonal meshes are typically lighter weight and faster to render,
1134
- depending on renderer and render mode. Use of "bilinear" will produce
1135
- a similar shape to a polygonal mesh and may offer additional guarantees
1136
- of watertightness and additional subdivision features (e.g. holes) but
1137
- may also not respect authored normals.""")
1138
-
1139
- token interpolateBoundary = "edgeAndCorner" (
1140
- allowedTokens = ["none", "edgeOnly", "edgeAndCorner"]
1141
- doc = """Specifies how subdivision is applied for faces adjacent to
1142
- boundary edges and boundary points. Valid values correspond to choices
1143
- available in OpenSubdiv:
1144
-
1145
- - __none__: No boundary interpolation is applied and boundary faces are
1146
- effectively treated as holes
1147
- - __edgeOnly__: A sequence of boundary edges defines a smooth curve to
1148
- which the edges of subdivided boundary faces converge
1149
- - __edgeAndCorner__: The default, similar to "edgeOnly" but the smooth
1150
- boundary curve is made sharp at corner points
1151
-
1152
- These are illustrated and described in more detail in the OpenSubdiv
1153
- documentation:
1154
- https://graphics.pixar.com/opensubdiv/docs/subdivision_surfaces.html#boundary-interpolation-rules""")
1155
-
1156
- token faceVaryingLinearInterpolation = "cornersPlus1" (
1157
- allowedTokens = ["none", "cornersOnly", "cornersPlus1",
1158
- "cornersPlus2", "boundaries", "all"]
1159
- doc = """Specifies how elements of a primvar of interpolation type
1160
- "faceVarying" are interpolated for subdivision surfaces. Interpolation
1161
- can be as smooth as a "vertex" primvar or constrained to be linear at
1162
- features specified by several options. Valid values correspond to
1163
- choices available in OpenSubdiv:
1164
-
1165
- - __none__: No linear constraints or sharpening, smooth everywhere
1166
- - __cornersOnly__: Sharpen corners of discontinuous boundaries only,
1167
- smooth everywhere else
1168
- - __cornersPlus1__: The default, same as "cornersOnly" plus additional
1169
- sharpening at points where three or more distinct face-varying
1170
- values occur
1171
- - __cornersPlus2__: Same as "cornersPlus1" plus additional sharpening
1172
- at points with at least one discontinuous boundary corner or
1173
- only one discontinuous boundary edge (a dart)
1174
- - __boundaries__: Piecewise linear along discontinuous boundaries,
1175
- smooth interior
1176
- - __all__: Piecewise linear everywhere
1177
-
1178
- These are illustrated and described in more detail in the OpenSubdiv
1179
- documentation:
1180
- https://graphics.pixar.com/opensubdiv/docs/subdivision_surfaces.html#face-varying-interpolation-rules""")
1181
-
1182
- token triangleSubdivisionRule = "catmullClark" (
1183
- allowedTokens = ["catmullClark", "smooth"]
1184
- doc = """Specifies an option to the subdivision rules for the
1185
- Catmull-Clark scheme to try and improve undesirable artifacts when
1186
- subdividing triangles. Valid values are "catmullClark" for the
1187
- standard rules (the default) and "smooth" for the improvement.
1188
-
1189
- See https://graphics.pixar.com/opensubdiv/docs/subdivision_surfaces.html#triangle-subdivision-rule""")
1190
-
1191
- int[] holeIndices = [] (
1192
- doc = """The indices of all faces that should be treated as holes,
1193
- i.e. made invisible. This is traditionally a feature of subdivision
1194
- surfaces and not generally applied to polygonal meshes.""")
1195
-
1196
- int[] cornerIndices = [] (
1197
- doc = """The indices of points for which a corresponding sharpness
1198
- value is specified in _cornerSharpnesses_ (so the size of this array
1199
- must match that of _cornerSharpnesses_).""")
1200
-
1201
- float[] cornerSharpnesses = [] (
1202
- doc = """The sharpness values associated with a corresponding set of
1203
- points specified in _cornerIndices_ (so the size of this array must
1204
- match that of _cornerIndices_). Use the constant `SHARPNESS_INFINITE`
1205
- for a perfectly sharp corner.""")
1206
-
1207
- int[] creaseIndices = [] (
1208
- doc = """The indices of points grouped into sets of successive pairs
1209
- that identify edges to be creased. The size of this array must be
1210
- equal to the sum of all elements of the _creaseLengths_ attribute.""")
1211
-
1212
- int[] creaseLengths = [] (
1213
- doc = """The length of this array specifies the number of creases
1214
- (sets of adjacent sharpened edges) on the mesh. Each element gives
1215
- the number of points of each crease, whose indices are successively
1216
- laid out in the _creaseIndices_ attribute. Since each crease must
1217
- be at least one edge long, each element of this array must be at
1218
- least two.""")
1219
-
1220
- float[] creaseSharpnesses = [] (
1221
- doc = """The per-crease or per-edge sharpness values for all creases.
1222
- Since _creaseLengths_ encodes the number of points in each crease,
1223
- the number of elements in this array will be either len(creaseLengths)
1224
- or the sum over all X of (creaseLengths[X] - 1). Note that while
1225
- the RI spec allows each crease to have either a single sharpness
1226
- or a value per-edge, USD will encode either a single sharpness
1227
- per crease on a mesh, or sharpnesses for all edges making up
1228
- the creases on a mesh. Use the constant `SHARPNESS_INFINITE` for a
1229
- perfectly sharp crease.""")
1230
- }
1231
-
1232
- class TetMesh "TetMesh" (
1233
- inherits = </PointBased>
1234
- customData = {
1235
- string extraIncludes = """
1236
- #include "pxr/usd/usd/timeCode.h" """
1237
- }
1238
- doc="""Encodes a tetrahedral mesh. A tetrahedral mesh is defined as a set of
1239
- tetrahedra. Each tetrahedron is defined by a set of 4 points, with the
1240
- triangles of the tetrahedron determined from these 4 points as described in
1241
- the <b>tetVertexIndices</b> attribute description. The mesh surface faces
1242
- are encoded as triangles. Surface faces must be provided for consumers
1243
- that need to do surface calculations, such as renderers or consumers using
1244
- physics attachments. Both tetrahedra and surface face definitions use
1245
- indices into the TetMesh's <b>points</b> attribute, inherited from
1246
- UsdGeomPointBased."""
1247
- ) {
1248
- #
1249
- # Common Properties
1250
- #
1251
- int4[] tetVertexIndices (
1252
- doc = """Flat list of the index (into the <b>points</b> attribute) of
1253
- each vertex of each tetrahedron in the mesh. Each int4 corresponds to the
1254
- indices of a single tetrahedron. Users should set the <b>orientation</b>
1255
- attribute of UsdGeomPrim accordingly. That is if the <b>orientation</b>
1256
- is "rightHanded", the CCW face ordering of a tetrahedron is
1257
- [123],[032],[013],[021] with respect to the int4. This results in the
1258
- normals facing outward from the center of the tetrahedron. The following
1259
- diagram shows the face ordering of an unwrapped tetrahedron with
1260
- "rightHanded" orientation.
1261
-
1262
- \\image html USDTetMeshRightHanded.svg
1263
-
1264
- If the <b>orientation</b> attribute is set to "leftHanded" the face
1265
- ordering of the tetrahedron is [321],[230],[310],[120] and the
1266
- leftHanded CW face normals point outward from the center of the
1267
- tetrahedron. The following diagram shows the face ordering of an
1268
- unwrapped tetrahedron with "leftHanded" orientation.
1269
-
1270
- \\image html USDTetMeshLeftHanded.svg
1271
-
1272
- Setting the <b>orientation</b> attribute to align with the
1273
- ordering of the int4 for the tetrahedrons is the responsibility of the
1274
- user."""
1275
- )
1276
-
1277
- int3[] surfaceFaceVertexIndices (
1278
- doc = """<b>surfaceFaceVertexIndices</b> defines the triangle
1279
- surface faces indices wrt. <b>points</b> of the tetmesh surface. Again
1280
- the <b>orientation</b> attribute inherited from UsdGeomPrim should be
1281
- set accordingly. The <b>orientation</b> for faces of tetrahedra and
1282
- surface faces must match."""
1283
- )
1284
- }
1285
-
1286
- class GeomSubset "GeomSubset" (
1287
- inherits = </Typed>
1288
- doc = """Encodes a subset of a piece of geometry (i.e. a UsdGeomImageable)
1289
- as a set of indices. Currently supports encoding subsets of faces,
1290
- points, edges, segments, and tetrahedrons.
1291
-
1292
- To apply to a geometric prim, a GeomSubset prim must be the prim's direct
1293
- child in namespace, and possess a concrete defining specifier (i.e. def).
1294
- This restriction makes it easy and efficient to discover subsets of a prim.
1295
- We might want to relax this restriction if it's common to have multiple
1296
- <b>families</b> of subsets on a gprim and if it's useful to be able to
1297
- organize subsets belonging to a <b>family</b> under a common scope. See
1298
- 'familyName' attribute for more info on defining a family of subsets.
1299
-
1300
- Note that a GeomSubset isn't an imageable (i.e. doesn't derive from
1301
- UsdGeomImageable). So, you can't author <b>visibility</b> for it or
1302
- override its <b>purpose</b>.
1303
-
1304
- Materials are bound to GeomSubsets just as they are for regular
1305
- geometry using API available in UsdShade (UsdShadeMaterial::Bind).
1306
- """
1307
- customData = {
1308
- string className = "Subset"
1309
- string extraIncludes = """
1310
- #include "pxr/base/tf/token.h"
1311
- #include "pxr/usd/usdGeom/imageable.h"
1312
- #include "pxr/usd/usdGeom/mesh.h"
1313
- #include "pxr/usd/usdGeom/tetMesh.h"
1314
- #include "pxr/usd/usdGeom/basisCurves.h"
1315
- """
1316
- }
1317
- )
1318
- {
1319
- uniform token elementType = "face" (
1320
- allowedTokens = ["face", "point", "edge", "segment", "tetrahedron"]
1321
- doc = """The type of element that the indices target. "elementType" can
1322
- have one of the following values:
1323
- <ul><li><b>face</b>: Identifies faces on a Gprim's surface. For a
1324
- UsdGeomMesh, each element of the _indices_ attribute would refer to
1325
- an element of the Mesh's _faceCounts_ attribute. For a UsdGeomTetMesh,
1326
- each element of the _indices_ attribute would refer to an element of
1327
- the Mesh's _surfaceFaceVertexIndices_ attribute.</li>
1328
- <li><b>point</b>: for any UsdGeomPointBased, each
1329
- element of the _indices_ attribute would refer to an element of the
1330
- Mesh's _points_ attribute</li>
1331
- <li><b>edge</b>: for any UsdGeomMesh, each pair of elements
1332
- in the _indices_ attribute would refer to a pair of points of the
1333
- Mesh's _points_ attribute that are connected as an implicit edge on the
1334
- Mesh. These edges are derived from the Mesh's _faceVertexIndices_
1335
- attribute. Edges are not currently defined for a UsdGeomTetMesh, but
1336
- could be derived from all tetrahedron edges or surface face edges only
1337
- if a specific use-case arises.</li>
1338
- <li><b>segment</b>: for any Curve, each pair of elements
1339
- in the _indices_ attribute would refer to a pair of indices
1340
- (_curveIndex_, _segmentIndex_) where _curveIndex_ is the position of
1341
- the specified curve in the Curve's _curveVertexCounts_ attribute, and
1342
- _segmentIndex_ is the index of the segment within that curve.</li>
1343
- <li><b>tetrahedron</b>: for any UsdGeomTetMesh, each element of the
1344
- _indices_ attribute would refer to an element of the TetMesh's
1345
- _tetVertexIndices_ attribute.
1346
- </li></ul>"""
1347
- )
1348
- int[] indices = [] (
1349
- doc = """The set of indices included in this subset. The indices need not
1350
- be sorted, but the same index should not appear more than once. Indices
1351
- are invalid if outside the range [0, elementCount) for the given time on
1352
- the parent geometric prim."""
1353
- )
1354
- uniform token familyName = "" (
1355
- doc = """The name of the family of subsets that this subset belongs to.
1356
- This is optional and is primarily useful when there are multiple
1357
- families of subsets under a geometric prim. In some cases, this could
1358
- also be used for achieving proper roundtripping of subset data between
1359
- DCC apps.
1360
- When multiple subsets belonging to a prim have the same familyName, they
1361
- are said to belong to the family. A <i>familyType</i> value can be
1362
- encoded on the owner of a family of subsets as a token using the static
1363
- method UsdGeomSubset::SetFamilyType(). "familyType" can have one of the
1364
- following values:
1365
- <ul><li><b>UsdGeomTokens->partition</b>: implies that every element of
1366
- the whole geometry appears exactly once in only one of the subsets
1367
- belonging to the family.</li>
1368
- <li><b>UsdGeomTokens->nonOverlapping</b>: an element that appears in one
1369
- subset may not appear in any other subset belonging to the family, and
1370
- appears only once in the subset in which it appears.</li>
1371
- <li><b>UsdGeomTokens->unrestricted</b>: implies that there are no
1372
- restrictions w.r.t. the membership of elements in the subsets. They
1373
- could be overlapping and the union of all subsets in the family may
1374
- not represent the whole.</li>
1375
- </ul>
1376
- \\note The validity of subset data is not enforced by the authoring
1377
- APIs, however they can be checked using UsdGeomSubset::ValidateFamily().
1378
- """
1379
- )
1380
- }
1381
-
1382
- class NurbsPatch "NurbsPatch" (
1383
- inherits = </PointBased>
1384
- doc = """Encodes a rational or polynomial non-uniform B-spline
1385
- surface, with optional trim curves.
1386
-
1387
- The encoding mostly follows that of RiNuPatch and RiTrimCurve:
1388
- https://renderman.pixar.com/resources/RenderMan_20/geometricPrimitives.html#rinupatch , with some minor renaming and coalescing for clarity.
1389
-
1390
- The layout of control vertices in the \\em points attribute inherited
1391
- from UsdGeomPointBased is row-major with U considered rows, and V columns.
1392
-
1393
- \\anchor UsdGeom_NurbsPatch_Form
1394
- <b>NurbsPatch Form</b>
1395
-
1396
- The authored points, orders, knots, weights, and ranges are all that is
1397
- required to render the nurbs patch. However, the only way to model closed
1398
- surfaces with nurbs is to ensure that the first and last control points
1399
- along the given axis are coincident. Similarly, to ensure the surface is
1400
- not only closed but also C2 continuous, the last \\em order - 1 control
1401
- points must be (correspondingly) coincident with the first \\em order - 1
1402
- control points, and also the spacing of the last corresponding knots
1403
- must be the same as the first corresponding knots.
1404
-
1405
- <b>Form</b> is provided as an aid to interchange between modeling and
1406
- animation applications so that they can robustly identify the intent with
1407
- which the surface was modelled, and take measures (if they are able) to
1408
- preserve the continuity/concidence constraints as the surface may be rigged
1409
- or deformed.
1410
- \\li An \\em open-form NurbsPatch has no continuity constraints.
1411
- \\li A \\em closed-form NurbsPatch expects the first and last control points
1412
- to overlap
1413
- \\li A \\em periodic-form NurbsPatch expects the first and last
1414
- \\em order - 1 control points to overlap.
1415
-
1416
- <b>Nurbs vs Subdivision Surfaces</b>
1417
-
1418
- Nurbs are an important modeling primitive in CAD/CAM tools and early
1419
- computer graphics DCC's. Because they have a natural UV parameterization
1420
- they easily support "trim curves", which allow smooth shapes to be
1421
- carved out of the surface.
1422
-
1423
- However, the topology of the patch is always rectangular, and joining two
1424
- nurbs patches together (especially when they have differing numbers of
1425
- spans) is difficult to do smoothly. Also, nurbs are not supported by
1426
- the Ptex texturing technology (http://ptex.us).
1427
-
1428
- Neither of these limitations are shared by subdivision surfaces; therefore,
1429
- although they do not subscribe to trim-curve-based shaping, subdivs are
1430
- often considered a more flexible modeling primitive.
1431
- """
1432
- ) {
1433
- int uVertexCount (
1434
- doc = """Number of vertices in the U direction. Should be at least as
1435
- large as uOrder."""
1436
- )
1437
-
1438
- int vVertexCount (
1439
- doc = """Number of vertices in the V direction. Should be at least as
1440
- large as vOrder."""
1441
- )
1442
-
1443
- int uOrder (
1444
- doc = """Order in the U direction. Order must be positive and is
1445
- equal to the degree of the polynomial basis to be evaluated, plus 1."""
1446
- )
1447
-
1448
- int vOrder (
1449
- doc = """Order in the V direction. Order must be positive and is
1450
- equal to the degree of the polynomial basis to be evaluated, plus 1."""
1451
- )
1452
-
1453
- double[] uKnots (
1454
- doc = """Knot vector for U direction providing U parameterization.
1455
- The length of this array must be ( uVertexCount + uOrder ), and its
1456
- entries must take on monotonically increasing values."""
1457
- )
1458
-
1459
- double[] vKnots (
1460
- doc = """Knot vector for V direction providing U parameterization.
1461
- The length of this array must be ( vVertexCount + vOrder ), and its
1462
- entries must take on monotonically increasing values."""
1463
- )
1464
-
1465
- uniform token uForm = "open" (
1466
- allowedTokens = ["open", "closed", "periodic"]
1467
- doc = """Interpret the control grid and knot vectors as representing
1468
- an open, geometrically closed, or geometrically closed and C2 continuous
1469
- surface along the U dimension.
1470
- \\sa \\ref UsdGeom_NurbsPatch_Form "NurbsPatch Form" """
1471
- )
1472
-
1473
- uniform token vForm = "open" (
1474
- allowedTokens = ["open", "closed", "periodic"]
1475
- doc = """Interpret the control grid and knot vectors as representing
1476
- an open, geometrically closed, or geometrically closed and C2 continuous
1477
- surface along the V dimension.
1478
- \\sa \\ref UsdGeom_NurbsPatch_Form "NurbsPatch Form" """
1479
- )
1480
-
1481
- # Alembic's NuPatch does not encode these... wonder how they
1482
- # get away with that? Just assume it's the full range, presumably.
1483
- double2 uRange (
1484
- doc = """Provides the minimum and maximum parametric values (as defined
1485
- by uKnots) over which the surface is actually defined. The minimum
1486
- must be less than the maximum, and greater than or equal to the
1487
- value of uKnots[uOrder-1]. The maxium must be less than or equal
1488
- to the last element's value in uKnots."""
1489
- )
1490
-
1491
- double2 vRange (
1492
- doc = """Provides the minimum and maximum parametric values (as defined
1493
- by vKnots) over which the surface is actually defined. The minimum
1494
- must be less than the maximum, and greater than or equal to the
1495
- value of vKnots[vOrder-1]. The maxium must be less than or equal
1496
- to the last element's value in vKnots."""
1497
- )
1498
-
1499
- double[] pointWeights (
1500
- doc = """Optionally provides "w" components for each control point,
1501
- thus must be the same length as the points attribute. If authored,
1502
- the patch will be rational. If unauthored, the patch will be
1503
- polynomial, i.e. weight for all points is 1.0.
1504
- \\note Some DCC's pre-weight the \\em points, but in this schema,
1505
- \\em points are not pre-weighted."""
1506
- )
1507
-
1508
- int[] trimCurve:counts (
1509
- doc = """Each element specifies how many curves are present in each
1510
- "loop" of the trimCurve, and the length of the array determines how
1511
- many loops the trimCurve contains. The sum of all elements is the
1512
- total nuber of curves in the trim, to which we will refer as
1513
- \\em nCurves in describing the other trim attributes."""
1514
- )
1515
-
1516
- int[] trimCurve:orders (
1517
- doc = """Flat list of orders for each of the \\em nCurves curves."""
1518
- )
1519
-
1520
- int[] trimCurve:vertexCounts (
1521
- doc = """Flat list of number of vertices for each of the
1522
- \\em nCurves curves."""
1523
- )
1524
-
1525
- double[] trimCurve:knots (
1526
- doc = """Flat list of parametric values for each of the
1527
- \\em nCurves curves. There will be as many knots as the sum over
1528
- all elements of \\em vertexCounts plus the sum over all elements of
1529
- \\em orders."""
1530
- )
1531
-
1532
- double2[] trimCurve:ranges (
1533
- doc = """Flat list of minimum and maximum parametric values
1534
- (as defined by \\em knots) for each of the \\em nCurves curves."""
1535
- )
1536
-
1537
- double3[] trimCurve:points (
1538
- doc = """Flat list of homogeneous 2D points (u, v, w) that comprise
1539
- the \\em nCurves curves. The number of points should be equal to the
1540
- um over all elements of \\em vertexCounts."""
1541
- )
1542
-
1543
- }
1544
-
1545
- class "Curves" (
1546
- customData = {
1547
- dictionary extraPlugInfo = {
1548
- bool implementsComputeExtent = true
1549
- }
1550
- }
1551
- inherits = </PointBased>
1552
- doc = """Base class for UsdGeomBasisCurves, UsdGeomNurbsCurves, and
1553
- UsdGeomHermiteCurves. The BasisCurves schema is designed to be
1554
- analagous to offline renderers' notion of batched curves (such as
1555
- the classical RIB definition via Basis and Curves statements),
1556
- while the NurbsCurve schema is designed to be analgous to the
1557
- NURBS curves found in packages like Maya and Houdini while
1558
- retaining their consistency with the RenderMan specification for
1559
- NURBS Patches. HermiteCurves are useful for the
1560
- interchange of animation guides and paths.
1561
-
1562
- It is safe to use the length of the curve vertex count to derive
1563
- the number of curves and the number and layout of curve vertices,
1564
- but this schema should NOT be used to derive the number of curve
1565
- points. While vertex indices are implicit in all shipped
1566
- descendent types of this schema, one should not assume that all
1567
- internal or future shipped schemas will follow this pattern. Be
1568
- sure to key any indexing behavior off the concrete type, not this
1569
- abstract type.
1570
- """
1571
- ) {
1572
- # topology attributes
1573
- int[] curveVertexCounts (
1574
- doc = """Curves-derived primitives can represent multiple distinct,
1575
- potentially disconnected curves. The length of 'curveVertexCounts'
1576
- gives the number of such curves, and each element describes the
1577
- number of vertices in the corresponding curve"""
1578
- )
1579
-
1580
- # shaping attributes
1581
- float[] widths (
1582
- doc = """Provides width specification for the curves, whose application
1583
- will depend on whether the curve is oriented (normals are defined for
1584
- it), in which case widths are "ribbon width", or unoriented, in which
1585
- case widths are cylinder width. 'widths' is not a generic Primvar,
1586
- but the number of elements in this attribute will be determined by
1587
- its 'interpolation'. See \\ref SetWidthsInterpolation() . If 'widths'
1588
- and 'primvars:widths' are both specified, the latter has precedence."""
1589
- )
1590
- }
1591
-
1592
- class BasisCurves "BasisCurves" (
1593
- inherits = </Curves>
1594
- doc = """BasisCurves are a batched curve representation analogous to the
1595
- classic RIB definition via Basis and Curves statements. BasisCurves are
1596
- often used to render dense aggregate geometry like hair or grass.
1597
-
1598
- A 'matrix' and 'vstep' associated with the \\em basis are used to
1599
- interpolate the vertices of a cubic BasisCurves. (The basis attribute
1600
- is unused for linear BasisCurves.)
1601
-
1602
- A single prim may have many curves whose count is determined implicitly by
1603
- the length of the \\em curveVertexCounts vector. Each individual curve is
1604
- composed of one or more segments. Each segment is defined by four vertices
1605
- for cubic curves and two vertices for linear curves. See the next section
1606
- for more information on how to map curve vertex counts to segment counts.
1607
-
1608
- \\section UsdGeomBasisCurves_Segment Segment Indexing
1609
- Interpolating a curve requires knowing how to decompose it into its
1610
- individual segments.
1611
-
1612
- The segments of a cubic curve are determined by the vertex count,
1613
- the \\em wrap (periodicity), and the vstep of the basis. For linear
1614
- curves, the basis token is ignored and only the vertex count and
1615
- wrap are needed.
1616
-
1617
- cubic basis | vstep
1618
- ------------- | ------
1619
- bezier | 3
1620
- catmullRom | 1
1621
- bspline | 1
1622
-
1623
- The first segment of a cubic (nonperiodic) curve is always defined by its
1624
- first four points. The vstep is the increment used to determine what
1625
- vertex indices define the next segment. For a two segment (nonperiodic)
1626
- bspline basis curve (vstep = 1), the first segment will be defined by
1627
- interpolating vertices [0, 1, 2, 3] and the second segment will be defined
1628
- by [1, 2, 3, 4]. For a two segment bezier basis curve (vstep = 3), the
1629
- first segment will be defined by interpolating vertices [0, 1, 2, 3] and
1630
- the second segment will be defined by [3, 4, 5, 6]. If the vstep is not
1631
- one, then you must take special care to make sure that the number of cvs
1632
- properly divides by your vstep. (The indices described are relative to
1633
- the initial vertex index for a batched curve.)
1634
-
1635
- For periodic curves, at least one of the curve's initial vertices are
1636
- repeated to close the curve. For cubic curves, the number of vertices
1637
- repeated is '4 - vstep'. For linear curves, only one vertex is repeated
1638
- to close the loop.
1639
-
1640
- Pinned curves are a special case of nonperiodic curves that only affects
1641
- the behavior of cubic Bspline and Catmull-Rom curves. To evaluate or render
1642
- pinned curves, a client must effectively add 'phantom points' at the
1643
- beginning and end of every curve in a batch. These phantom points
1644
- are injected to ensure that the interpolated curve begins at P[0] and
1645
- ends at P[n-1].
1646
-
1647
- For a curve with initial point P[0] and last point P[n-1], the phantom
1648
- points are defined as.
1649
- P[-1] = 2 * P[0] - P[1]
1650
- P[n] = 2 * P[n-1] - P[n-2]
1651
-
1652
- Pinned cubic curves will (usually) have to be unpacked into the standard
1653
- nonperiodic representation before rendering. This unpacking can add some
1654
- additional overhead. However, using pinned curves reduces the amount of
1655
- data recorded in a scene and (more importantly) better records the
1656
- authors' intent for interchange.
1657
-
1658
- \\note The additional phantom points mean that the minimum curve vertex
1659
- count for cubic bspline and catmullRom curves is 2.
1660
-
1661
- Linear curve segments are defined by two vertices.
1662
- A two segment linear curve's first segment would be defined by
1663
- interpolating vertices [0, 1]. The second segment would be defined by
1664
- vertices [1, 2]. (Again, for a batched curve, indices are relative to
1665
- the initial vertex index.)
1666
-
1667
- When validating curve topology, each renderable entry in the
1668
- curveVertexCounts vector must pass this check.
1669
-
1670
- type | wrap | validitity
1671
- ------- | --------------------------- | ----------------
1672
- linear | nonperiodic | curveVertexCounts[i] > 2
1673
- linear | periodic | curveVertexCounts[i] > 3
1674
- cubic | nonperiodic | (curveVertexCounts[i] - 4) % vstep == 0
1675
- cubic | periodic | (curveVertexCounts[i]) % vstep == 0
1676
- cubic | pinned (catmullRom/bspline) | (curveVertexCounts[i] - 2) >= 0
1677
-
1678
- \\section UsdGeomBasisCurves_BasisMatrix Cubic Vertex Interpolation
1679
-
1680
- \\image html USDCurveBasisMatrix.png width=750
1681
-
1682
- \\section UsdGeomBasisCurves_Linear Linear Vertex Interpolation
1683
-
1684
- Linear interpolation is always used on curves of type linear.
1685
- 't' with domain [0, 1], the curve is defined by the equation
1686
- P0 * (1-t) + P1 * t. t at 0 describes the first point and t at 1 describes
1687
- the end point.
1688
-
1689
- \\section UsdGeomBasisCurves_PrimvarInterpolation Primvar Interpolation
1690
-
1691
- For cubic curves, primvar data can be either interpolated cubically between
1692
- vertices or linearly across segments. The corresponding token
1693
- for cubic interpolation is 'vertex' and for linear interpolation is
1694
- 'varying'. Per vertex data should be the same size as the number
1695
- of vertices in your curve. Segment varying data is dependent on the
1696
- wrap (periodicity) and number of segments in your curve. For linear curves,
1697
- varying and vertex data would be interpolated the same way. By convention
1698
- varying is the preferred interpolation because of the association of
1699
- varying with linear interpolation.
1700
-
1701
- \\image html USDCurvePrimvars.png
1702
-
1703
- To convert an entry in the curveVertexCounts vector into a segment count
1704
- for an individual curve, apply these rules. Sum up all the results in
1705
- order to compute how many total segments all curves have.
1706
-
1707
- The following tables describe the expected segment count for the 'i'th
1708
- curve in a curve batch as well as the entire batch. Python syntax
1709
- like '[:]' (to describe all members of an array) and 'len(...)'
1710
- (to describe the length of an array) are used.
1711
-
1712
- type | wrap | curve segment count | batch segment count
1713
- ------- | --------------------------- | -------------------------------------- | --------------------------
1714
- linear | nonperiodic | curveVertexCounts[i] - 1 | sum(curveVertexCounts[:]) - len(curveVertexCounts)
1715
- linear | periodic | curveVertexCounts[i] | sum(curveVertexCounts[:])
1716
- cubic | nonperiodic | (curveVertexCounts[i] - 4) / vstep + 1 | sum(curveVertexCounts[:] - 4) / vstep + len(curveVertexCounts)
1717
- cubic | periodic | curveVertexCounts[i] / vstep | sum(curveVertexCounts[:]) / vstep
1718
- cubic | pinned (catmullRom/bspline) | (curveVertexCounts[i] - 2) + 1 | sum(curveVertexCounts[:] - 2) + len(curveVertexCounts)
1719
-
1720
- The following table descrives the expected size of varying
1721
- (linearly interpolated) data, derived from the segment counts computed
1722
- above.
1723
-
1724
- wrap | curve varying count | batch varying count
1725
- ------------------- | ---------------------------- | ------------------------------------------------
1726
- nonperiodic/pinned | segmentCounts[i] + 1 | sum(segmentCounts[:]) + len(curveVertexCounts)
1727
- periodic | segmentCounts[i] | sum(segmentCounts[:])
1728
-
1729
- Both curve types additionally define 'constant' interpolation for the
1730
- entire prim and 'uniform' interpolation as per curve data.
1731
-
1732
-
1733
- \\note Take care when providing support for linearly interpolated data for
1734
- cubic curves. Its shape doesn't provide a one to one mapping with either
1735
- the number of curves (like 'uniform') or the number of vertices (like
1736
- 'vertex') and so it is often overlooked. This is the only primitive in
1737
- UsdGeom (as of this writing) where this is true. For meshes, while they
1738
- use different interpolation methods, 'varying' and 'vertex' are both
1739
- specified per point. It's common to assume that curves follow a similar
1740
- pattern and build in structures and language for per primitive, per
1741
- element, and per point data only to come upon these arrays that don't
1742
- quite fit into either of those categories. It is
1743
- also common to conflate 'varying' with being per segment data and use the
1744
- segmentCount rules table instead of its neighboring varying data table
1745
- rules. We suspect that this is because for the common case of
1746
- nonperiodic cubic curves, both the provided segment count and varying data
1747
- size formula end with '+ 1'. While debugging, users may look at the double
1748
- '+ 1' as a mistake and try to remove it. We take this time to enumerate
1749
- these issues because we've fallen into them before and hope that we save
1750
- others time in their own implementations.
1751
-
1752
- As an example of deriving per curve segment and varying primvar data counts from
1753
- the wrap, type, basis, and curveVertexCount, the following table is provided.
1754
-
1755
- wrap | type | basis | curveVertexCount | curveSegmentCount | varyingDataCount
1756
- ------------- | ------- | ------- | ----------------- | ------------------ | -------------------------
1757
- nonperiodic | linear | N/A | [2 3 2 5] | [1 2 1 4] | [2 3 2 5]
1758
- nonperiodic | cubic | bezier | [4 7 10 4 7] | [1 2 3 1 2] | [2 3 4 2 3]
1759
- nonperiodic | cubic | bspline | [5 4 6 7] | [2 1 3 4] | [3 2 4 5]
1760
- periodic | cubic | bezier | [6 9 6] | [2 3 2] | [2 3 2]
1761
- periodic | linear | N/A | [3 7] | [3 7] | [3 7]
1762
-
1763
- \\section UsdGeomBasisCurves_TubesAndRibbons Tubes and Ribbons
1764
-
1765
- The strictest definition of a curve as an infinitely thin wire is not
1766
- particularly useful for describing production scenes. The additional
1767
- \\em widths and \\em normals attributes can be used to describe cylindrical
1768
- tubes and or flat oriented ribbons.
1769
-
1770
- Curves with only widths defined are imaged as tubes with radius
1771
- 'width / 2'. Curves with both widths and normals are imaged as ribbons
1772
- oriented in the direction of the interpolated normal vectors.
1773
-
1774
- While not technically UsdGeomPrimvars, widths and normals
1775
- also have interpolation metadata. It's common for authored widths to have
1776
- constant, varying, or vertex interpolation
1777
- (see UsdGeomCurves::GetWidthsInterpolation()). It's common for
1778
- authored normals to have varying interpolation
1779
- (see UsdGeomPointBased::GetNormalsInterpolation()).
1780
-
1781
- \\image html USDCurveHydra.png
1782
-
1783
- The file used to generate these curves can be found in
1784
- extras/usd/examples/usdGeomExamples/basisCurves.usda. It's provided
1785
- as a reference on how to properly image both tubes and ribbons. The first
1786
- row of curves are linear; the second are cubic bezier. (We aim in future
1787
- releases of HdSt to fix the discontinuity seen with broken tangents to
1788
- better match offline renderers like RenderMan.) The yellow and violet
1789
- cubic curves represent cubic vertex width interpolation for which there is
1790
- no equivalent for linear curves.
1791
-
1792
- \\note How did this prim type get its name? This prim is a portmanteau of
1793
- two different statements in the original RenderMan specification:
1794
- 'Basis' and 'Curves'.
1795
- """
1796
- ) {
1797
- # interpolation attributes
1798
- uniform token type = "cubic" (
1799
- allowedTokens = ["linear", "cubic"]
1800
- doc = """Linear curves interpolate linearly between two vertices.
1801
- Cubic curves use a basis matrix with four vertices to interpolate a segment.""")
1802
-
1803
- uniform token basis = "bezier" (
1804
- allowedTokens = ["bezier", "bspline", "catmullRom"]
1805
- doc = """The basis specifies the vstep and matrix used for cubic
1806
- interpolation. \\note The 'hermite' and 'power' tokens have been
1807
- removed. We've provided UsdGeomHermiteCurves
1808
- as an alternative for the 'hermite' basis.""")
1809
-
1810
- uniform token wrap = "nonperiodic" (
1811
- allowedTokens = ["nonperiodic", "periodic", "pinned"]
1812
- doc = """If wrap is set to periodic, the curve when rendered will
1813
- repeat the initial vertices (dependent on the vstep) to close the
1814
- curve. If wrap is set to 'pinned', phantom points may be created
1815
- to ensure that the curve interpolation starts at P[0] and ends at P[n-1].
1816
- """)
1817
- }
1818
-
1819
- class NurbsCurves "NurbsCurves" (
1820
- inherits = </Curves>
1821
- doc = """This schema is analagous to NURBS Curves in packages like Maya
1822
- and Houdini, often used for interchange of rigging and modeling curves.
1823
- Unlike Maya, this curve spec supports batching of multiple curves into a
1824
- single prim, widths, and normals in the schema. Additionally, we require
1825
- 'numSegments + 2 * degree + 1' knots (2 more than maya does). This is to
1826
- be more consistent with RenderMan's NURBS patch specification.
1827
-
1828
- To express a periodic curve:
1829
- - knot[0] = knot[1] - (knots[-2] - knots[-3];
1830
- - knot[-1] = knot[-2] + (knot[2] - knots[1]);
1831
-
1832
- To express a nonperiodic curve:
1833
- - knot[0] = knot[1];
1834
- - knot[-1] = knot[-2];
1835
-
1836
- In spite of these slight differences in the spec, curves generated in Maya
1837
- should be preserved when roundtripping.
1838
-
1839
- \\em order and \\em range, when representing a batched NurbsCurve should be
1840
- authored one value per curve. \\em knots should be the concatentation of
1841
- all batched curves."""
1842
- ) {
1843
- # topology attributes
1844
- int[] order = [] (
1845
- doc = """Order of the curve. Order must be positive and is
1846
- equal to the degree of the polynomial basis to be evaluated, plus 1.
1847
- Its value for the 'i'th curve must be less than or equal to
1848
- curveVertexCount[i]""")
1849
-
1850
- # interpolation attributes
1851
- double[] knots (
1852
- doc = """Knot vector providing curve parameterization.
1853
- The length of the slice of the array for the ith curve
1854
- must be ( curveVertexCount[i] + order[i] ), and its
1855
- entries must take on monotonically increasing values.""")
1856
-
1857
- double2[] ranges (
1858
- doc = """Provides the minimum and maximum parametric values (as defined
1859
- by knots) over which the curve is actually defined. The minimum must
1860
- be less than the maximum, and greater than or equal to the value of the
1861
- knots['i'th curve slice][order[i]-1]. The maxium must be less
1862
- than or equal to the last element's value in knots['i'th curve slice].
1863
- Range maps to (vmin, vmax) in the RenderMan spec.""")
1864
-
1865
- double[] pointWeights (
1866
- doc = """Optionally provides "w" components for each control point,
1867
- thus must be the same length as the points attribute. If authored,
1868
- the curve will be rational. If unauthored, the curve will be
1869
- polynomial, i.e. weight for all points is 1.0.
1870
- \\note Some DCC's pre-weight the \\em points, but in this schema,
1871
- \\em points are not pre-weighted."""
1872
- )
1873
- }
1874
-
1875
- class Points "Points" (
1876
- customData = {
1877
- dictionary extraPlugInfo = {
1878
- bool implementsComputeExtent = true
1879
- }
1880
- }
1881
- inherits = </PointBased>
1882
- doc = """Points are analogous to the <A HREF="https://renderman.pixar.com/resources/RenderMan_20/appnote.18.html">RiPoints spec</A>.
1883
-
1884
- Points can be an efficient means of storing and rendering particle
1885
- effects comprised of thousands or millions of small particles. Points
1886
- generally receive a single shading sample each, which should take
1887
- \\em normals into account, if present.
1888
-
1889
- While not technically UsdGeomPrimvars, the widths and normals also
1890
- have interpolation metadata. It's common for authored widths and normals
1891
- to have constant or varying interpolation."""
1892
-
1893
- ) {
1894
- # shaping attributes
1895
- float[] widths (
1896
- doc = """Widths are defined as the \\em diameter of the points, in
1897
- object space. 'widths' is not a generic Primvar, but
1898
- the number of elements in this attribute will be determined by
1899
- its 'interpolation'. See \\ref SetWidthsInterpolation() . If
1900
- 'widths' and 'primvars:widths' are both specified, the latter
1901
- has precedence."""
1902
- )
1903
-
1904
- int64[] ids (
1905
- doc = """Ids are optional; if authored, the ids array should be the same
1906
- length as the points array, specifying (at each timesample if
1907
- point identities are changing) the id of each point. The
1908
- type is signed intentionally, so that clients can encode some
1909
- binary state on Id'd points without adding a separate
1910
- primvar."""
1911
- )
1912
- }
1913
-
1914
- class PointInstancer "PointInstancer" (
1915
- doc = """Encodes vectorized instancing of multiple, potentially
1916
- animated, prototypes (object/instance masters), which can be arbitrary
1917
- prims/subtrees on a UsdStage.
1918
-
1919
- PointInstancer is a "multi instancer", as it allows multiple prototypes
1920
- to be scattered among its "points". We use a UsdRelationship
1921
- \\em prototypes to identify and order all of the possible prototypes, by
1922
- targeting the root prim of each prototype. The ordering imparted by
1923
- relationships associates a zero-based integer with each prototype, and
1924
- it is these integers we use to identify the prototype of each instance,
1925
- compactly, and allowing prototypes to be swapped out without needing to
1926
- reauthor all of the per-instance data.
1927
-
1928
- The PointInstancer schema is designed to scale to billions of instances,
1929
- which motivates the choice to split the per-instance transformation into
1930
- position, (quaternion) orientation, and scales, rather than a
1931
- 4x4 matrix per-instance. In addition to requiring fewer bytes even if
1932
- all elements are authored (32 bytes vs 64 for a single-precision 4x4
1933
- matrix), we can also be selective about which attributes need to animate
1934
- over time, for substantial data reduction in many cases.
1935
-
1936
- Note that PointInstancer is \\em not a Gprim, since it is not a graphical
1937
- primitive by any stretch of the imagination. It \\em is, however,
1938
- Boundable, since we will sometimes want to treat the entire PointInstancer
1939
- similarly to a procedural, from the perspective of inclusion or framing.
1940
-
1941
- \\section UsdGeomPointInstancer_varyingTopo Varying Instance Identity over Time
1942
-
1943
- PointInstancers originating from simulations often have the characteristic
1944
- that points/instances are "born", move around for some time period, and then
1945
- die (or leave the area of interest). In such cases, billions of instances
1946
- may be birthed over time, while at any \\em specific time, only a much
1947
- smaller number are actually alive. To encode this situation efficiently,
1948
- the simulator may re-use indices in the instance arrays, when a particle
1949
- dies, its index will be taken over by a new particle that may be birthed in
1950
- a much different location. This presents challenges both for
1951
- identity-tracking, and for motion-blur.
1952
-
1953
- We facilitate identity tracking by providing an optional, animatable
1954
- \\em ids attribute, that specifies the 64 bit integer ID of the particle
1955
- at each index, at each point in time. If the simulator keeps monotonically
1956
- increasing a particle-count each time a new particle is birthed, it will
1957
- serve perfectly as particle \\em ids.
1958
-
1959
- We facilitate motion blur for varying-topology particle streams by
1960
- optionally allowing per-instance \\em velocities and \\em angularVelocities
1961
- to be authored. If instance transforms are requested at a time between
1962
- samples and either of the velocity attributes is authored, then we will
1963
- not attempt to interpolate samples of \\em positions or \\em orientations.
1964
- If not authored, and the bracketing samples have the same length, then we
1965
- will interpolate.
1966
-
1967
- \\section UsdGeomPointInstancer_transform Computing an Instance Transform
1968
-
1969
- Each instance's transformation is a combination of the SRT affine transform
1970
- described by its scale, orientation, and position, applied \\em after
1971
- (i.e. less locally than) the local to parent transformation computed at
1972
- the root of the prototype it is instancing.
1973
-
1974
- If your processing of prototype geometry naturally takes into account the
1975
- transform of the prototype root, then this term can be omitted from the
1976
- computation of each instance transform, and this can be controlled when
1977
- computing instance transformation matrices using the
1978
- UsdGeomPointInstancer::PrototypeXformInclusion enumeration.
1979
-
1980
- To understand the computation of the instance transform, in order to put
1981
- an instance of a PointInstancer into the space of the PointInstancer's
1982
- parent prim we do the following:
1983
-
1984
- 1. Apply (most locally) the authored local to parent transformation for
1985
- <em>prototypes[protoIndices[i]]</em>
1986
- 2. If *scales* is authored, next apply the scaling matrix from *scales[i]*
1987
- 3. If *orientations* is authored: **if *angularVelocities* is authored**,
1988
- first multiply *orientations[i]* by the unit quaternion derived by scaling
1989
- *angularVelocities[i]* by the \\ref UsdGeom_PITimeScaling "time differential"
1990
- from the left-bracketing timeSample for *orientation* to the requested
1991
- evaluation time *t*, storing the result in *R*, **else** assign *R*
1992
- directly from *orientations[i]*. Apply the rotation matrix derived
1993
- from *R*.
1994
- 4. Apply the translation derived from *positions[i]*. If *velocities* is
1995
- authored, apply the translation deriving from *velocities[i]* scaled by
1996
- the time differential from the left-bracketing timeSample for *positions*
1997
- to the requested evaluation time *t*.
1998
- 5. Least locally, apply the transformation authored on the PointInstancer
1999
- prim itself (or the UsdGeomImageable::ComputeLocalToWorldTransform() of the
2000
- PointInstancer to put the instance directly into world space)
2001
-
2002
- If neither *velocities* nor *angularVelocities* are authored, we fallback to
2003
- standard position and orientation computation logic (using linear
2004
- interpolation between timeSamples) as described by
2005
- \\ref UsdGeom_VelocityInterpolation .
2006
-
2007
- \\anchor UsdGeom_PITimeScaling
2008
- <b>Scaling Velocities for Interpolation</b>
2009
-
2010
- When computing time-differentials by which to apply velocity or
2011
- angularVelocity to positions or orientations, we must scale by
2012
- ( 1.0 / UsdStage::GetTimeCodesPerSecond() ), because velocities are recorded
2013
- in units/second, while we are interpolating in UsdTimeCode ordinates.
2014
-
2015
- We provide both high and low-level API's for dealing with the
2016
- transformation as a matrix, both will compute the instance matrices using
2017
- multiple threads; the low-level API allows the client to cache unvarying
2018
- inputs so that they need not be read duplicately when computing over
2019
- time.
2020
-
2021
- See also \\ref UsdGeom_VelocityInterpolation .
2022
-
2023
- \\section UsdGeomPointInstancer_primvars Primvars on PointInstancer
2024
-
2025
- \\ref UsdGeomPrimvar "Primvars" authored on a PointInstancer prim should
2026
- always be applied to each instance with \\em constant interpolation at
2027
- the root of the instance. When you are authoring primvars on a
2028
- PointInstancer, think about it as if you were authoring them on a
2029
- point-cloud (e.g. a UsdGeomPoints gprim). The same
2030
- <A HREF="https://renderman.pixar.com/resources/RenderMan_20/appnote.22.html#classSpecifiers">interpolation rules for points</A> apply here, substituting
2031
- "instance" for "point".
2032
-
2033
- In other words, the (constant) value extracted for each instance
2034
- from the authored primvar value depends on the authored \\em interpolation
2035
- and \\em elementSize of the primvar, as follows:
2036
- \\li <b>constant</b> or <b>uniform</b> : the entire authored value of the
2037
- primvar should be applied exactly to each instance.
2038
- \\li <b>varying</b>, <b>vertex</b>, or <b>faceVarying</b>: the first
2039
- \\em elementSize elements of the authored primvar array should be assigned to
2040
- instance zero, the second \\em elementSize elements should be assigned to
2041
- instance one, and so forth.
2042
-
2043
-
2044
- \\section UsdGeomPointInstancer_masking Masking Instances: "Deactivating" and Invising
2045
-
2046
- Often a PointInstancer is created "upstream" in a graphics pipeline, and
2047
- the needs of "downstream" clients necessitate eliminating some of the
2048
- instances from further consideration. Accomplishing this pruning by
2049
- re-authoring all of the per-instance attributes is not very attractive,
2050
- since it may mean destructively editing a large quantity of data. We
2051
- therefore provide means of "masking" instances by ID, such that the
2052
- instance data is unmolested, but per-instance transform and primvar data
2053
- can be retrieved with the no-longer-desired instances eliminated from the
2054
- (smaller) arrays. PointInstancer allows two independent means of masking
2055
- instances by ID, each with different features that meet the needs of
2056
- various clients in a pipeline. Both pruning features' lists of ID's are
2057
- combined to produce the mask returned by ComputeMaskAtTime().
2058
-
2059
- \\note If a PointInstancer has no authored \\em ids attribute, the masking
2060
- features will still be available, with the integers specifying element
2061
- position in the \\em protoIndices array rather than ID.
2062
-
2063
- \\subsection UsdGeomPointInstancer_inactiveIds InactiveIds: List-edited, Unvarying Masking
2064
-
2065
- The first masking feature encodes a list of IDs in a list-editable metadatum
2066
- called \\em inactiveIds, which, although it does not have any similar
2067
- impact to stage population as \\ref UsdPrim::SetActive() "prim activation",
2068
- it shares with that feature that its application is uniform over all time.
2069
- Because it is list-editable, we can \\em sparsely add and remove instances
2070
- from it in many layers.
2071
-
2072
- This sparse application pattern makes \\em inactiveIds a good choice when
2073
- further downstream clients may need to reverse masking decisions made
2074
- upstream, in a manner that is robust to many kinds of future changes to
2075
- the upstream data.
2076
-
2077
- See ActivateId(), ActivateIds(), DeactivateId(), DeactivateIds(),
2078
- ActivateAllIds()
2079
-
2080
- \\subsection UsdGeomPointInstancer_invisibleIds invisibleIds: Animatable Masking
2081
-
2082
- The second masking feature encodes a list of IDs in a time-varying
2083
- Int64Array-valued UsdAttribute called \\em invisibleIds , since it shares
2084
- with \\ref UsdGeomImageable::GetVisibilityAttr() "Imageable visibility"
2085
- the ability to animate object visibility.
2086
-
2087
- Unlike \\em inactiveIds, overriding a set of opinions for \\em invisibleIds
2088
- is not at all straightforward, because one will, in general need to
2089
- reauthor (in the overriding layer) **all** timeSamples for the attribute
2090
- just to change one Id's visibility state, so it cannot be authored
2091
- sparsely. But it can be a very useful tool for situations like encoding
2092
- pre-computed camera-frustum culling of geometry when either or both of
2093
- the instances or the camera is animated.
2094
-
2095
- See VisId(), VisIds(), InvisId(), InvisIds(), VisAllIds()
2096
-
2097
- \\section UsdGeomPointInstancer_protoProcessing Processing and Not Processing Prototypes
2098
-
2099
- Any prim in the scenegraph can be targeted as a prototype by the
2100
- \\em prototypes relationship. We do not, however, provide a specific
2101
- mechanism for identifying prototypes as geometry that should not be drawn
2102
- (or processed) in their own, local spaces in the scenegraph. We
2103
- encourage organizing all prototypes as children of the PointInstancer
2104
- prim that consumes them, and pruning "raw" processing and drawing
2105
- traversals when they encounter a PointInstancer prim; this is what the
2106
- UsdGeomBBoxCache and UsdImaging engines do.
2107
-
2108
- There \\em is a pattern one can deploy for organizing the prototypes
2109
- such that they will automatically be skipped by basic UsdPrim::GetChildren()
2110
- or UsdPrimRange traversals. Usd prims each have a
2111
- \\ref Usd_PrimSpecifiers "specifier" of "def", "over", or "class". The
2112
- default traversals skip over prims that are "pure overs" or classes. So
2113
- to protect prototypes from all generic traversals and processing, place
2114
- them under a prim that is just an "over". For example,
2115
- \\code
2116
- 01 def PointInstancer "Crowd_Mid"
2117
- 02 {
2118
- 03 rel prototypes = [ </Crowd_Mid/Prototypes/MaleThin_Business>, </Crowd_Mid/Prototypes/MaleThin_Casual> ]
2119
- 04
2120
- 05 over "Prototypes"
2121
- 06 {
2122
- 07 def "MaleThin_Business" (
2123
- 08 references = [@MaleGroupA/usd/MaleGroupA.usd@</MaleGroupA>]
2124
- 09 variants = {
2125
- 10 string modelingVariant = "Thin"
2126
- 11 string costumeVariant = "BusinessAttire"
2127
- 12 }
2128
- 13 )
2129
- 14 { ... }
2130
- 15
2131
- 16 def "MaleThin_Casual"
2132
- 17 ...
2133
- 18 }
2134
- 19 }
2135
- \\endcode
2136
- """
2137
-
2138
- inherits = </Boundable>
2139
- customData = {
2140
- dictionary extraPlugInfo = {
2141
- bool implementsComputeExtent = true
2142
- }
2143
- dictionary schemaTokens = {
2144
- dictionary inactiveIds = {
2145
- string doc = """int64listop prim metadata that specifies
2146
- the PointInstancer ids that should be masked (unrenderable)
2147
- over all time."""
2148
- }
2149
- }
2150
- }
2151
- ) {
2152
- rel prototypes (
2153
- doc = """<b>Required property</b>. Orders and targets the prototype root
2154
- prims, which can be located anywhere in the scenegraph that is convenient,
2155
- although we promote organizing prototypes as children of the
2156
- PointInstancer. The position of a prototype in this relationship defines
2157
- the value an instance would specify in the \\em protoIndices attribute to
2158
- instance that prototype. Since relationships are uniform, this property
2159
- cannot be animated."""
2160
- )
2161
-
2162
- int[] protoIndices (
2163
- doc = """<b>Required property</b>. Per-instance index into
2164
- \\em prototypes relationship that identifies what geometry should be
2165
- drawn for each instance. <b>Topology attribute</b> - can be animated,
2166
- but at a potential performance impact for streaming."""
2167
- )
2168
-
2169
- int64[] ids (
2170
- doc = """Ids are optional; if authored, the ids array should be the same
2171
- length as the \\em protoIndices array, specifying (at each timeSample if
2172
- instance identities are changing) the id of each instance. The
2173
- type is signed intentionally, so that clients can encode some
2174
- binary state on Id'd instances without adding a separate primvar.
2175
- See also \\ref UsdGeomPointInstancer_varyingTopo"""
2176
- )
2177
-
2178
- point3f[] positions (
2179
- doc = """<b>Required property</b>. Per-instance position. See also
2180
- \\ref UsdGeomPointInstancer_transform ."""
2181
- )
2182
-
2183
- quath[] orientations (
2184
- doc="""If authored, per-instance orientation of each instance about its
2185
- prototype's origin, represented as a unit length quaternion, which
2186
- allows us to encode it with sufficient precision in a compact GfQuath.
2187
-
2188
- It is client's responsibility to ensure that authored quaternions are
2189
- unit length; the convenience API below for authoring orientations from
2190
- rotation matrices will ensure that quaternions are unit length, though
2191
- it will not make any attempt to select the "better (for interpolation
2192
- with respect to neighboring samples)" of the two possible quaternions
2193
- that encode the rotation.
2194
-
2195
- See also \\ref UsdGeomPointInstancer_transform .""" )
2196
-
2197
- quatf[] orientationsf (
2198
- doc="""If authored, per-instance orientation of each instance about its
2199
- prototype's origin, represented as a unit length quaternion, encoded
2200
- as a GfQuatf to support higher precision computations.
2201
-
2202
- It is client's responsibility to ensure that authored quaternions are
2203
- unit length; the convenience API below for authoring orientations from
2204
- rotation matrices will ensure that quaternions are unit length, though
2205
- it will not make any attempt to select the "better (for interpolation
2206
- with respect to neighboring samples)" of the two possible quaternions
2207
- that encode the rotation. Note that if the earliest time sample (or
2208
- default value if there are no time samples) of orientationsf is not empty
2209
- orientationsf will be preferred over orientations if both are authored.
2210
-
2211
- See also \\ref UsdGeomPointInstancer_transform .""" )
2212
-
2213
- float3[] scales (
2214
- doc="""If authored, per-instance scale to be applied to
2215
- each instance, before any rotation is applied.
2216
-
2217
- See also \\ref UsdGeomPointInstancer_transform ."""
2218
- )
2219
-
2220
- vector3f[] velocities (
2221
- doc = """If provided, per-instance 'velocities' will be used to
2222
- compute positions between samples for the 'positions' attribute,
2223
- rather than interpolating between neighboring 'positions' samples.
2224
- Velocities should be considered mandatory if both \\em protoIndices
2225
- and \\em positions are animated. Velocity is measured in position
2226
- units per second, as per most simulation software. To convert to
2227
- position units per UsdTimeCode, divide by
2228
- UsdStage::GetTimeCodesPerSecond().
2229
-
2230
- See also \\ref UsdGeomPointInstancer_transform,
2231
- \\ref UsdGeom_VelocityInterpolation ."""
2232
- )
2233
-
2234
- vector3f[] accelerations (
2235
- doc = """If authored, per-instance 'accelerations' will be used with
2236
- velocities to compute positions between samples for the 'positions'
2237
- attribute rather than interpolating between neighboring 'positions'
2238
- samples. Acceleration is measured in position units per second-squared.
2239
- To convert to position units per squared UsdTimeCode, divide by the
2240
- square of UsdStage::GetTimeCodesPerSecond()."""
2241
- )
2242
-
2243
- vector3f[] angularVelocities (
2244
- doc="""If authored, per-instance angular velocity vector to be used for
2245
- interoplating orientations. Angular velocities should be considered
2246
- mandatory if both \\em protoIndices and \\em orientations are animated.
2247
- Angular velocity is measured in <b>degrees</b> per second. To convert
2248
- to degrees per UsdTimeCode, divide by
2249
- UsdStage::GetTimeCodesPerSecond().
2250
-
2251
- See also \\ref UsdGeomPointInstancer_transform ."""
2252
- )
2253
-
2254
- int64[] invisibleIds = [] (
2255
- doc="""A list of id's to make invisible at the evaluation time.
2256
- See \\ref UsdGeomPointInstancer_invisibleIds ."""
2257
- )
2258
- }
2259
-
2260
-
2261
- class Camera "Camera" (
2262
- doc = """Transformable camera.
2263
-
2264
- Describes optical properties of a camera via a common set of attributes
2265
- that provide control over the camera's frustum as well as its depth of
2266
- field. For stereo, the left and right camera are individual prims tagged
2267
- through the \\ref UsdGeomCamera::GetStereoRoleAttr() "stereoRole attribute".
2268
-
2269
- There is a corresponding class GfCamera, which can hold the state of a
2270
- camera (at a particular time). \\ref UsdGeomCamera::GetCamera() and
2271
- \\ref UsdGeomCamera::SetFromCamera() convert between a USD camera prim and
2272
- a GfCamera.
2273
-
2274
- To obtain the camera's location in world space, call the following on a
2275
- UsdGeomCamera 'camera':
2276
- \\code
2277
- GfMatrix4d camXform = camera.ComputeLocalToWorldTransform(time);
2278
- \\endcode
2279
- \\note
2280
- <b>Cameras in USD are always "Y up", regardless of the stage's orientation
2281
- (i.e. UsdGeomGetStageUpAxis()).</b> 'camXform' positions the camera in the
2282
- world, and the inverse transforms the world such that the camera is at the
2283
- origin, looking down the -Z axis, with +Y as the up axis, and +X pointing to
2284
- the right. This describes a __right handed coordinate system__.
2285
-
2286
- \\section UsdGeom_CameraUnits Units of Measure for Camera Properties
2287
-
2288
- Despite the familiarity of millimeters for specifying some physical
2289
- camera properties, UsdGeomCamera opts for greater consistency with all
2290
- other UsdGeom schemas, which measure geometric properties in scene units,
2291
- as determined by UsdGeomGetStageMetersPerUnit(). We do make a
2292
- concession, however, in that lens and filmback properties are measured in
2293
- __tenths of a scene unit__ rather than "raw" scene units. This means
2294
- that with the fallback value of .01 for _metersPerUnit_ - i.e. scene unit
2295
- of centimeters - then these "tenth of scene unit" properties are
2296
- effectively millimeters.
2297
-
2298
- \\note If one adds a Camera prim to a UsdStage whose scene unit is not
2299
- centimeters, the fallback values for filmback properties will be
2300
- incorrect (or at the least, unexpected) in an absolute sense; however,
2301
- proper imaging through a "default camera" with focusing disabled depends
2302
- only on ratios of the other properties, so the camera is still usable.
2303
- However, it follows that if even one property is authored in the correct
2304
- scene units, then they all must be.
2305
-
2306
- \\section UsdGeom_CameraExposure Camera Exposure Model
2307
-
2308
- UsdGeomCamera models exposure by a camera in terms of exposure time, ISO,
2309
- f-stop, and exposure compensation, mirroring the controls on a real camera.
2310
- These parameters are provided by \\ref UsdGeomCamera::GetExposureTimeAttr(),
2311
- \\ref UsdGeomCamera::GetExposureIsoAttr(),
2312
- \\ref UsdGeomCamera::GetExposureFStopAttr(),
2313
- and \\ref UsdGeomCamera::GetExposureAttr(), respectively.
2314
- \\ref UsdGeomCamera::GetExposureResponsivityAttr() provides an additional
2315
- scaling factor to model the overall responsivity of the system,
2316
- including response of the sensor and loss by the lens.
2317
-
2318
- The calculated scaling factor can be obtained from
2319
- \\ref UsdGeomCamera::ComputeLinearExposureScale(). It is computed as:
2320
- \\code
2321
- linearExposureScale = exposureResponsivity *
2322
- (exposureTime * (exposureIso/100) * pow(2, exposure))
2323
- / (exposureFStop * exposureFStop)
2324
- \\endcode
2325
-
2326
- This scaling factor is combined from two parts: The first, known as the
2327
- __imaging ratio__ (in _steradian-second_), converts from incident luminance
2328
- at the front of the lens system, in _nit_ (_cd/m^2_), to photometric
2329
- exposure at the sensor in _lux-second_. The second, `exposureResponsivity`
2330
- (in _inverse lux-second_), converts from photometric exposure at the sensor,
2331
- in _lux-second_, to a unitless output signal.
2332
-
2333
- For a thorough treatment of this topic, see
2334
- https://github.com/wetadigital/physlight/blob/main/docs/physLight-v1.3-1bdb6ec3-20230805.pdf,
2335
- Section 2.2. Note that we are essentially implementing Equation 2.7, but are
2336
- choosing C such that it exactly cancels with the factor of pi in the
2337
- numerator, replacing it with a responsivity factor that defaults to 1.
2338
-
2339
- Renderers should simply multiply the brightness of the image by the exposure
2340
- scale. The default values for the exposure-related attributes combine to
2341
- give a scale of 1.0.
2342
-
2343
- \\sa \\ref UsdGeom_LinAlgBasics
2344
- """
2345
- inherits = </Xformable>
2346
- customData = {
2347
- string extraIncludes = """
2348
- #include "pxr/base/gf/camera.h" """
2349
- }
2350
- ) {
2351
- # viewing frustum
2352
- token projection = "perspective" (
2353
- allowedTokens = ["perspective", "orthographic"])
2354
- float horizontalAperture = 20.9550 (
2355
- doc = """Horizontal aperture in tenths of a scene unit; see
2356
- \\ref UsdGeom_CameraUnits . Default is the equivalent of
2357
- the standard 35mm spherical projector aperture.""")
2358
- float verticalAperture = 15.2908 (
2359
- doc = """Vertical aperture in tenths of a scene unit; see
2360
- \\ref UsdGeom_CameraUnits . Default is the equivalent of
2361
- the standard 35mm spherical projector aperture.""")
2362
- float horizontalApertureOffset = 0.0 (
2363
- doc = """Horizontal aperture offset in the same units as
2364
- horizontalAperture. Defaults to 0.""")
2365
- float verticalApertureOffset = 0.0 (
2366
- doc = """Vertical aperture offset in the same units as
2367
- verticalAperture. Defaults to 0.""")
2368
- float focalLength = 50.0 (
2369
- doc = """Perspective focal length in tenths of a scene unit; see
2370
- \\ref UsdGeom_CameraUnits .""")
2371
- float2 clippingRange = (1, 1000000) (
2372
- doc = """Near and far clipping distances in scene units; see
2373
- \\ref UsdGeom_CameraUnits .""")
2374
- float4[] clippingPlanes = [] (
2375
- doc = """Additional, arbitrarily oriented clipping planes.
2376
- A vector (a,b,c,d) encodes a clipping plane that cuts off
2377
- (x,y,z) with a * x + b * y + c * z + d * 1 < 0 where (x,y,z)
2378
- are the coordinates in the camera's space.""")
2379
-
2380
- # depth of field
2381
- float fStop = 0.0 (
2382
- doc = """Lens aperture. Defaults to 0.0, which turns off depth of field effects.""")
2383
- float focusDistance = 0.0 (
2384
- doc = """Distance from the camera to the focus plane in scene units; see
2385
- \\ref UsdGeom_CameraUnits .""")
2386
-
2387
- # stereoscopic 3D
2388
- uniform token stereoRole = "mono" (
2389
- allowedTokens = ["mono", "left", "right"]
2390
- doc = """If different from mono, the camera is intended to be the left
2391
- or right camera of a stereo setup.""")
2392
-
2393
- # Parameters for motion blur
2394
- double shutter:open = 0.0 (
2395
- doc = """Frame relative shutter open time in UsdTimeCode units (negative
2396
- value indicates that the shutter opens before the current
2397
- frame time). Used for motion blur."""
2398
- )
2399
- double shutter:close = 0.0 (
2400
- doc = """Frame relative shutter close time, analogous comments from
2401
- shutter:open apply. A value greater or equal to shutter:open
2402
- should be authored, otherwise there is no exposure and a
2403
- renderer should produce a black image. Used for motion blur."""
2404
- )
2405
-
2406
- # exposure adjustment
2407
- float exposure = 0.0 (
2408
- doc = """Exposure compensation, as a log base-2 value. The default
2409
- of 0.0 has no effect. A value of 1.0 will double the
2410
- image-plane intensities in a rendered image; a value of
2411
- -1.0 will halve them."""
2412
- )
2413
-
2414
- # exposure controls
2415
- float exposure:iso = 100.0 (
2416
- doc = """The speed rating of the sensor or film when calculating exposure.
2417
- Higher numbers give a brighter image, lower numbers darker."""
2418
- )
2419
-
2420
- float exposure:time = 1.0 (
2421
- doc = """Time in seconds that the sensor is exposed to light when calculating exposure.
2422
- Longer exposure times create a brighter image, shorter times darker.
2423
- Note that shutter:open and shutter:close model essentially the
2424
- same property of a physical camera, but are for specifying the
2425
- size of the motion blur streak which is for practical purposes
2426
- useful to keep separate."""
2427
- )
2428
-
2429
- float exposure:fStop = 1.0 (
2430
- doc = """f-stop of the aperture when calculating exposure. Smaller numbers
2431
- create a brighter image, larger numbers darker.
2432
- Note that the `fStop` attribute also models the diameter of the camera
2433
- aperture, but for specifying depth of field. For practical
2434
- purposes it is useful to keep the exposure and the depth of field
2435
- controls separate.
2436
- """
2437
- )
2438
-
2439
- float exposure:responsivity = 1.0 (
2440
- doc = """Scalar multiplier representing overall responsivity of the
2441
- sensor system to light when calculating exposure. Intended to be
2442
- used as a per camera/lens system measured scaling value."""
2443
- )
2444
- }
2445
-
2446
- class "GeomModelAPI"
2447
- (
2448
- inherits = </APISchemaBase>
2449
- customData = {
2450
- string className = "ModelAPI"
2451
- string extraIncludes = """
2452
- #include "pxr/usd/usdGeom/bboxCache.h"
2453
- #include "pxr/usd/usdGeom/constraintTarget.h"
2454
- #include "pxr/usd/usdGeom/imageable.h" """
2455
- dictionary schemaTokens = {
2456
- dictionary extentsHint = {
2457
- string doc = """Name of the attribute used to author extents
2458
- hints at the root of leaf models. Extents hints are stored by purpose
2459
- as a vector of GfVec3f values. They are ordered based on the order
2460
- of purpose tokens returned by
2461
- UsdGeomImageable::GetOrderedPurposeTokens."""
2462
- }
2463
- }
2464
- }
2465
- doc = """UsdGeomModelAPI extends the generic UsdModelAPI schema with
2466
- geometry specific concepts such as cached extents for the entire model,
2467
- constraint targets, and geometry-inspired extensions to the payload
2468
- lofting process.
2469
-
2470
- As described in GetExtentsHint() below, it is useful to cache extents
2471
- at the model level. UsdGeomModelAPI provides schema for computing and
2472
- storing these cached extents, which can be consumed by UsdGeomBBoxCache to
2473
- provide fast access to precomputed extents that will be used as the model's
2474
- bounds ( see UsdGeomBBoxCache::UsdGeomBBoxCache() ).
2475
-
2476
- \\section UsdGeomModelAPI_drawMode Draw Modes
2477
-
2478
- Draw modes provide optional alternate imaging behavior for USD subtrees with
2479
- kind model. \\em model:drawMode (which is inheritable) and
2480
- \\em model:applyDrawMode (which is not) are resolved into a decision to stop
2481
- traversing the scene graph at a certain point, and replace a USD subtree
2482
- with proxy geometry.
2483
-
2484
- The value of \\em model:drawMode determines the type of proxy geometry:
2485
- - \\em origin - Draw the model-space basis vectors of the replaced prim.
2486
- - \\em bounds - Draw the model-space bounding box of the replaced prim.
2487
- - \\em cards - Draw textured quads as a placeholder for the replaced prim.
2488
- - \\em default - An explicit opinion to draw the USD subtree as normal.
2489
- - \\em inherited - Defer to the parent opinion.
2490
-
2491
- \\em model:drawMode falls back to _inherited_ so that a whole scene,
2492
- a large group, or all prototypes of a model hierarchy PointInstancer can
2493
- be assigned a draw mode with a single attribute edit. If no draw mode is
2494
- explicitly set in a hierarchy, the resolved value is _default_.
2495
-
2496
- \\em model:applyDrawMode is meant to be written when an asset is authored,
2497
- and provides flexibility for different asset types. For example,
2498
- a character assembly (composed of character, clothes, etc) might have
2499
- \\em model:applyDrawMode set at the top of the subtree so the whole group
2500
- can be drawn as a single card object. An effects subtree might have
2501
- \\em model:applyDrawMode set at a lower level so each particle
2502
- group draws individually.
2503
-
2504
- Models of kind component are automatically treated as if
2505
- \\em model:applyDrawMode were true if \\em model:applyDrawMode is not
2506
- authored on the component prim. A component prim will be drawn drawn with a
2507
- simplified representation when the prim has kind component,
2508
- \\em model:applyDrawMode is not authored (or authored to be true), and the
2509
- resolved (i.e. inherited down namespace) value for \\em model:drawMode is
2510
- not _default_. If you don't want component prims to use the resolved
2511
- non-default drawMode, you must apply the UsdGeomModelAPI schema on the prim
2512
- and explicitly set \\em model:applyDrawMode to false.
2513
-
2514
- \\section UsdGeomModelAPI_cardGeometry Cards Geometry
2515
-
2516
- The specific geometry used in cards mode is controlled by the
2517
- \\em model:cardGeometry attribute:
2518
- - \\em cross - Generate a quad normal to each basis direction and negative.
2519
- Locate each quad so that it bisects the model extents.
2520
- - \\em box - Generate a quad normal to each basis direction and negative.
2521
- Locate each quad on a face of the model extents, facing out.
2522
- - \\em fromTexture - Generate a quad for each supplied texture from
2523
- attributes stored in that texture's metadata.
2524
-
2525
- For \\em cross and \\em box mode, the extents are calculated for purposes
2526
- \\em default, \\em proxy, and \\em render, at their earliest authored time.
2527
- If the model has no textures, all six card faces are rendered using
2528
- \\em model:drawModeColor. If one or more textures are present, only axes
2529
- with one or more textures assigned are drawn. For each axis, if both
2530
- textures (positive and negative) are specified, they'll be used on the
2531
- corresponding card faces; if only one texture is specified, it will be
2532
- mapped to the opposite card face after being flipped on the texture's
2533
- s-axis. Any card faces with invalid asset paths will be drawn with
2534
- \\em model:drawModeColor.
2535
-
2536
- Both \\em model:cardGeometry and \\em model:drawModeColor should be
2537
- authored on the prim where the draw mode takes effect, since these
2538
- attributes are not inherited.
2539
-
2540
- For \\em fromTexture mode, only card faces with valid textures assigned
2541
- are drawn. The geometry is generated by pulling the \\em worldtoscreen
2542
- attribute out of texture metadata. This is expected to be a 4x4 matrix
2543
- mapping the model-space position of the card quad to the clip-space quad
2544
- with corners (-1,-1,0) and (1,1,0). The card vertices are generated by
2545
- transforming the clip-space corners by the inverse of \\em worldtoscreen.
2546
- Textures are mapped so that (s) and (t) map to (+x) and (+y) in clip space.
2547
- If the metadata cannot be read in the right format, or the matrix can't
2548
- be inverted, the card face is not drawn.
2549
-
2550
- All card faces are drawn and textured as single-sided.
2551
-
2552
- \\todo CreatePayload() """
2553
- )
2554
- {
2555
- uniform token model:drawMode = "inherited" (
2556
- allowedTokens = ["origin", "bounds", "cards", "default", "inherited"]
2557
- doc = """Alternate imaging mode; applied to this prim or child prims
2558
- where \\em model:applyDrawMode is true, or where the prim
2559
- has kind \\em component and \\em model:applyDrawMode is not
2560
- authored. See \\ref UsdGeomModelAPI_drawMode
2561
- for mode descriptions."""
2562
- )
2563
- uniform bool model:applyDrawMode = false (
2564
- doc = """If true, and the resolved value of \\em model:drawMode is
2565
- non-default, apply an alternate imaging mode to this prim. See
2566
- \\ref UsdGeomModelAPI_drawMode."""
2567
- )
2568
- uniform float3 model:drawModeColor = (0.18, 0.18, 0.18) (
2569
- doc = """The base color of imaging prims inserted for alternate
2570
- imaging modes. For \\em origin and \\em bounds modes, this
2571
- controls line color; for \\em cards mode, this controls the
2572
- fallback quad color."""
2573
- )
2574
- uniform token model:cardGeometry = "cross" (
2575
- allowedTokens = ["cross", "box", "fromTexture"]
2576
- doc = """The geometry to generate for imaging prims inserted for \\em
2577
- cards imaging mode. See \\ref UsdGeomModelAPI_cardGeometry for
2578
- geometry descriptions."""
2579
- )
2580
- asset model:cardTextureXPos (
2581
- doc = """In \\em cards imaging mode, the texture applied to the X+ quad.
2582
- The texture axes (s,t) are mapped to model-space axes (-y, -z)."""
2583
- )
2584
- asset model:cardTextureYPos (
2585
- doc = """In \\em cards imaging mode, the texture applied to the Y+ quad.
2586
- The texture axes (s,t) are mapped to model-space axes (x, -z)."""
2587
- )
2588
- asset model:cardTextureZPos (
2589
- doc = """In \\em cards imaging mode, the texture applied to the Z+ quad.
2590
- The texture axes (s,t) are mapped to model-space axes (x, -y)."""
2591
- )
2592
- asset model:cardTextureXNeg (
2593
- doc = """In \\em cards imaging mode, the texture applied to the X- quad.
2594
- The texture axes (s,t) are mapped to model-space axes (y, -z)."""
2595
- )
2596
- asset model:cardTextureYNeg (
2597
- doc = """In \\em cards imaging mode, the texture applied to the Y- quad.
2598
- The texture axes (s,t) are mapped to model-space axes (-x, -z)."""
2599
- )
2600
- asset model:cardTextureZNeg (
2601
- doc = """In \\em cards imaging mode, the texture applied to the Z- quad.
2602
- The texture axes (s,t) are mapped to model-space axes (-x, -y)."""
2603
- )
2604
- }
2605
-
2606
- class "MotionAPI"
2607
- (
2608
- inherits = </APISchemaBase>
2609
- doc = """UsdGeomMotionAPI encodes data that can live on any prim that
2610
- may affect computations involving:
2611
- - computed motion for motion blur
2612
- - sampling for motion blur
2613
-
2614
- The \\ref GetMotionBlurScaleAttr() "motion:blurScale" attribute allows
2615
- artists to scale the __amount__ of motion blur to be rendered for parts
2616
- of the scene without changing the recorded animation. See
2617
- \\ref UsdGeomMotionAPI_blurScale for use and implementation details.
2618
-
2619
- """
2620
- )
2621
- {
2622
- float motion:blurScale = 1.0 (
2623
- doc = """BlurScale is an __inherited__ float attribute that stipulates
2624
- the rendered motion blur (as typically specified via UsdGeomCamera's
2625
- _shutter:open_ and _shutter:close_ properties) should be scaled for
2626
- __all objects__ at and beneath the prim in namespace on which the
2627
- _motion:blurScale_ value is specified.
2628
-
2629
- Without changing any other data in the scene, _blurScale_ allows artists to
2630
- "dial in" the amount of blur on a per-object basis. A _blurScale_
2631
- value of zero removes all blur, a value of 0.5 reduces blur by half,
2632
- and a value of 2.0 doubles the blur. The legal range for _blurScale_
2633
- is [0, inf), although very high values may result in extremely expensive
2634
- renders, and may exceed the capabilities of some renderers.
2635
-
2636
- Although renderers are free to implement this feature however they see
2637
- fit, see \\ref UsdGeomMotionAPI_blurScale for our guidance on implementing
2638
- the feature universally and efficiently.
2639
-
2640
- \\sa ComputeMotionBlurScale()
2641
- """
2642
- )
2643
-
2644
- float motion:velocityScale = 1.0 (
2645
- customData = {
2646
- string apiName = "velocityScale"
2647
- }
2648
- doc = """\\deprecated
2649
-
2650
- VelocityScale is an **inherited** float attribute that
2651
- velocity-based schemas (e.g. PointBased, PointInstancer) can consume
2652
- to compute interpolated positions and orientations by applying
2653
- velocity and angularVelocity, which is required for interpolating
2654
- between samples when topology is varying over time. Although these
2655
- quantities are generally physically computed by a simulator, sometimes
2656
- we require more or less motion-blur to achieve the desired look.
2657
- VelocityScale allows artists to dial-in, as a post-sim correction,
2658
- a scale factor to be applied to the velocity prior to computing
2659
- interpolated positions from it."""
2660
- )
2661
-
2662
- int motion:nonlinearSampleCount = 3 (
2663
- customData = {
2664
- string apiName = "nonlinearSampleCount"
2665
- }
2666
- doc = """Determines the number of position or transformation samples
2667
- created when motion is described by attributes contributing non-linear
2668
- terms.
2669
-
2670
- To give an example, imagine an application (such as a
2671
- renderer) consuming 'points' and the USD document also
2672
- contains 'accelerations' for the same prim. Unless the
2673
- application can consume these 'accelerations' itself, an
2674
- intermediate layer has to compute samples within the sampling
2675
- interval for the point positions based on the value of
2676
- 'points', 'velocities' and 'accelerations'. The number of these
2677
- samples is given by 'nonlinearSampleCount'. The samples are
2678
- equally spaced within the sampling interval.
2679
-
2680
- Another example involves the PointInstancer where
2681
- 'nonlinearSampleCount' is relevant when 'angularVelocities'
2682
- or 'accelerations' are authored.
2683
-
2684
- 'nonlinearSampleCount' is an **inherited** attribute, also
2685
- see ComputeNonlinearSampleCount()"""
2686
- )
2687
- }
2688
-
2689
- class "XformCommonAPI"
2690
- (
2691
- inherits = </APISchemaBase>
2692
- doc = """This class provides API for authoring and retrieving a standard set
2693
- of component transformations which include a scale, a rotation, a
2694
- scale-rotate pivot and a translation. The goal of the API is to enhance
2695
- component-wise interchange. It achieves this by limiting the set of allowed
2696
- basic ops and by specifying the order in which they are applied. In addition
2697
- to the basic set of ops, the 'resetXformStack' bit can also be set to
2698
- indicate whether the underlying xformable resets the parent transformation
2699
- (i.e. does not inherit it's parent's transformation).
2700
-
2701
- \\sa UsdGeomXformCommonAPI::GetResetXformStack()
2702
- \\sa UsdGeomXformCommonAPI::SetResetXformStack()
2703
-
2704
- The operator-bool for the class will inform you whether an existing
2705
- xformable is compatible with this API.
2706
-
2707
- The scale-rotate pivot is represented by a pair of (translate,
2708
- inverse-translate) xformOps around the scale and rotate operations.
2709
- The rotation operation can be any of the six allowed Euler angle sets.
2710
- \\sa UsdGeomXformOp::Type.
2711
-
2712
- The xformOpOrder of an xformable that has all of the supported basic ops
2713
- is as follows:
2714
- ["xformOp:translate", "xformOp:translate:pivot", "xformOp:rotateXYZ",
2715
- "xformOp:scale", "!invert!xformOp:translate:pivot"].
2716
-
2717
- It is worth noting that all of the ops are optional. For example, an
2718
- xformable may have only a translate or a rotate. It would still be
2719
- considered as compatible with this API. Individual SetTranslate(),
2720
- SetRotate(), SetScale() and SetPivot() methods are provided by this API
2721
- to allow such sparse authoring."""
2722
- customData = {
2723
- string apiSchemaType = "nonApplied"
2724
- string extraIncludes = """
2725
- #include "pxr/usd/usdGeom/xformable.h"
2726
- #include "pxr/usd/usdGeom/xformOp.h" """
2727
- dictionary schemaTokens = {
2728
- dictionary pivot = {
2729
- string doc = """Op suffix for the standard scale-rotate pivot
2730
- on a UsdGeomXformCommonAPI-compatible prim.
2731
- """
2732
- }
2733
- }
2734
- }
2735
- )
2736
- {
2737
- }
2738
-
2739
- class HermiteCurves "HermiteCurves" (
2740
- inherits = </Curves>
2741
- doc = """This schema specifies a cubic hermite interpolated curve batch as
2742
- sometimes used for defining guides for animation. While hermite curves can
2743
- be useful because they interpolate through their control points, they are
2744
- not well supported by high-end renderers for imaging. Therefore, while we
2745
- include this schema for interchange, we strongly recommend the use of
2746
- UsdGeomBasisCurves as the representation of curves intended to be rendered
2747
- (ie. hair or grass). Hermite curves can be converted to a Bezier
2748
- representation (though not from Bezier back to Hermite in general).
2749
-
2750
- \\section UsdGeomHermiteCurves_Interpolation Point Interpolation
2751
-
2752
- The initial cubic curve segment is defined by the first two points and
2753
- first two tangents. Additional segments are defined by additional
2754
- point / tangent pairs. The number of segments for each non-batched hermite
2755
- curve would be len(curve.points) - 1. The total number of segments
2756
- for the batched UsdGeomHermiteCurves representation is
2757
- len(points) - len(curveVertexCounts).
2758
-
2759
- \\section UsdGeomHermiteCurves_Primvars Primvar, Width, and Normal Interpolation
2760
-
2761
- Primvar interpolation is not well specified for this type as it is not
2762
- intended as a rendering representation. We suggest that per point
2763
- primvars would be linearly interpolated across each segment and should
2764
- be tagged as 'varying'.
2765
-
2766
- It is not immediately clear how to specify cubic or 'vertex' interpolation
2767
- for this type, as we lack a specification for primvar tangents. This
2768
- also means that width and normal interpolation should be restricted to
2769
- varying (linear), uniform (per curve element), or constant (per prim).
2770
- """
2771
- ) {
2772
- vector3f[] tangents = [] (
2773
- doc = """Defines the outgoing trajectory tangent for each point.
2774
- Tangents should be the same size as the points attribute.""")
2775
- }