cgmath 2.0.0__tar.gz → 3.0.2__tar.gz
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.
- {cgmath-2.0.0 → cgmath-3.0.2}/PKG-INFO +2 -2
- {cgmath-2.0.0 → cgmath-3.0.2}/README.md +1 -1
- {cgmath-2.0.0 → cgmath-3.0.2}/__init__.py +1 -1
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/_examples_hierarchy.py +5 -2
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/_examples_render.py +2 -0
- cgmath-3.0.2/_tests/test_assets/test_data_module.curve.pkl +0 -0
- cgmath-3.0.2/_tests/test_assets/test_data_module.mesh.pkl +0 -0
- cgmath-3.0.2/_tests/test_assets/test_data_module.patch.pkl +0 -0
- cgmath-3.0.2/_tests/test_assets/test_data_module.saved_by_2_0_0.zip +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_base.py +13 -5
- cgmath-3.0.2/_tests/test_base_setattr.py +1144 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_clip.py +5754 -97
- cgmath-3.0.2/_tests/test_data_module.py +390 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_fbx_export.py +41 -7
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_fbx_import.py +11 -0
- cgmath-3.0.2/_tests/test_fbx_labels.py +1284 -0
- cgmath-3.0.2/_tests/test_file_routes.py +1056 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_geometry.py +76 -20
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_geometry_io.py +1 -1
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_hierarchy.py +105 -121
- cgmath-3.0.2/_tests/test_import_order.py +116 -0
- cgmath-3.0.2/_tests/test_list_item_class.py +368 -0
- cgmath-3.0.2/_tests/test_morph_target.py +1372 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_namespaces.py +1 -1
- cgmath-3.0.2/_tests/test_object_skin.py +1839 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_raycast.py +51 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_render_serialization.py +1 -1
- cgmath-3.0.2/_tests/test_render_threads.py +1684 -0
- cgmath-3.0.2/_tests/test_resample.py +1112 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_roundtrip.py +3 -2
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_scene.py +33 -0
- cgmath-3.0.2/_tests/test_short_names.py +1329 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_skin_weights.py +53 -3
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_symmetry.py +28 -1
- {cgmath-2.0.0 → cgmath-3.0.2}/cgmath.egg-info/PKG-INFO +2 -2
- {cgmath-2.0.0 → cgmath-3.0.2}/cgmath.egg-info/SOURCES.txt +28 -2
- {cgmath-2.0.0 → cgmath-3.0.2}/constraints/procrustes.py +4 -1
- cgmath-2.0.0/geometry/_base.py → cgmath-3.0.2/data.py +730 -139
- {cgmath-2.0.0 → cgmath-3.0.2}/formats/fbx.py +65 -13
- {cgmath-2.0.0 → cgmath-3.0.2}/formats/glb.py +50 -4
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/__init__.py +1 -1
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/_saddle_surface.py +17 -5
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/bspline.py +20 -1
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/bspline_patch.py +23 -1
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/deform/delta_mush.py +11 -1
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/deform/ffd.py +4 -1
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/deform/patch_relax.py +4 -1
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/deform/skin_deform.py +7 -14
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/deform/wrap.py +4 -1
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/map.py +1 -1
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/mesh.py +399 -60
- cgmath-3.0.2/geometry/morph_target.py +750 -0
- cgmath-3.0.2/geometry/resample.py +707 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/sdf.py +4 -1
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/skin_weights.py +80 -25
- {cgmath-2.0.0 → cgmath-3.0.2}/hierarchy/__init__.py +7 -2
- {cgmath-2.0.0 → cgmath-3.0.2}/hierarchy/hierarchy.py +3542 -426
- {cgmath-2.0.0 → cgmath-3.0.2}/pyproject.toml +2 -2
- cgmath-3.0.2/render/_tiles.py +757 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/render/raytracer.py +76 -11
- {cgmath-2.0.0 → cgmath-3.0.2}/render/scene.py +192 -19
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_numba/_quaternion.py +132 -33
- cgmath-3.0.2/transforms/_numba/_vector.py +413 -0
- cgmath-3.0.2/transforms/_tests/test_slerp.py +909 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/main.py +139 -5
- cgmath-2.0.0/_tests/test_base_setattr.py +0 -348
- cgmath-2.0.0/_tests/test_morph_target.py +0 -640
- cgmath-2.0.0/_tests/test_object_skin.py +0 -846
- cgmath-2.0.0/_tests/test_resample.py +0 -403
- cgmath-2.0.0/geometry/morph_target.py +0 -488
- cgmath-2.0.0/geometry/resample.py +0 -393
- cgmath-2.0.0/transforms/_numba/_vector.py +0 -263
- {cgmath-2.0.0 → cgmath-3.0.2}/LICENSE +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/__init__.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/_examples_curves.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/_examples_deform.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/_examples_geometry.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/_maya_rotate_order.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/maya_euler.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/mikktspace_deformed_data.json +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/mikktspace_test_data.json +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_geometry.bspline_best_fit_params.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_geometry.bspline_maya_curves.json +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_hierarchy.legacy_parent_node.json +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_hierarchy.legacy_parent_node.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_hierarchy.legacy_parent_node.pkl +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_hierarchy.legacy_parent_node_clip.json +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_hierarchy.results.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_hierarchy.skeleton.json +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_ngon.bitmap_buffer.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_ngon.source_mesh_data.json +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_ngon.source_uv_list.json +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_ngon.triangulate_mesh_data.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_ngon.triangulate_mesh_data_ngons_only.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_ngon.triangulate_mesh_data_preserve_order.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_ngon.triangulate_mesh_data_preserve_order_ngons_only.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_ngon.triangulate_uv_list.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_ngon.triangulate_uv_list_ngons_only.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_ngon.triangulate_uv_list_preserve_order.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_ngon.triangulate_uv_list_preserve_order_ngons_only.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_resample.dst_bs_data.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_resample.dst_mesh_data.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_resample.dst_skin_data.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_resample.dst_uv_data.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_resample.overlap.pkl +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_resample.src_bs_data.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_resample.src_mesh_data.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_resample.src_skin_data.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_resample.src_uv_data.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_assets/test_sdf.igloo.npz +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_bspline_kernels.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_constraints.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_curves_empty.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_curves_types.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_deform_files.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_deform_utils.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_delta_mush.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_euler_maya.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_fbx_lifetime.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_ffd.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_geometry_utils.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_glb.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_glb_materials.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_hierarchy_io.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_imports.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_map.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_mesh_usd.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_ngon.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_normals_quadmatch_utils.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_pack.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_parent_lookups.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_patch_relax.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_procrustes_rotation.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_quadrangulate.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_raycast_bvh.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_rbf.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_render_cache.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_render_fit_padding.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_render_roundtrip_extra.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_resample_bezier.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_robust_skinweights_transfer_bilinear.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_saddle_surface.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_scene_animate.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_sdf.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_skin_deform.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_skin_fbx.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_skin_glb.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_skin_kernels.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_triangulation.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_usd_prim.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_utils.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/_tests/test_wrap.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/cgmath.egg-info/dependency_links.txt +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/cgmath.egg-info/requires.txt +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/cgmath.egg-info/top_level.txt +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/constraints/__init__.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/formats/__init__.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/formats/_fbx_io.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/formats/usd/__init__.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/formats/usd/prim.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/formats/usd/stage.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/_cdt.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/deform/__init__.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/pack.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/robust_skinweights_transfer_bilinear.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/__init__.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/__init__.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_bilinear.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_blur.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_bspline.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_bvh.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_cdt.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_connectivity.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_delta_mush.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_ffd.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_main.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_normals.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_pack.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_patch_relax.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_rasterize.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_sdf.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_skin_deform.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_skin_weights.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_subdivide.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_subdivision.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_tangent_space.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_topology.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/_numba/_wrap.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/geometry/utils/main.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/rbf/__init__.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/rbf/_kernels.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/rbf/_numba/__init__.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/rbf/_numba/_kernels.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/rbf/_numba/_lu.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/render/__init__.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/render/_numba/__init__.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/render/_numba/_texture.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/render/camera.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/render/frame.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/render/texture.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/setup.cfg +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/__init__.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_numba/__init__.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_numba/_axis.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_numba/_euler.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_numba/_matrix.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_tests/__init__.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_tests/test_axis.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_tests/test_broadcasting.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_tests/test_euler.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_tests/test_exports.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_tests/test_matrix.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_tests/test_quaternion.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_tests/test_rotation_conversions.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_tests/test_threads.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/_tests/test_vector.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/transforms/utils.py +0 -0
- {cgmath-2.0.0 → cgmath-3.0.2}/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cgmath
|
|
3
|
-
Version:
|
|
3
|
+
Version: 3.0.2
|
|
4
4
|
Summary: A DCC-agnostic CG math library: batched matrix, quaternion and euler math, mesh topology, deformers, resampling, skeletal hierarchies, SDFs, a software raytracer and asset IO, all numpy-native.
|
|
5
5
|
Author-email: Eric Vignola <eric.vignola@gmail.com>
|
|
6
6
|
License: ## License
|
|
@@ -147,6 +147,7 @@ name with its real signature and first docstring line.
|
|
|
147
147
|
|
|
148
148
|
```
|
|
149
149
|
cgmath/
|
|
150
|
+
├── data.py Data / DataList / Array / ImmutableArray + serialization
|
|
150
151
|
├── utils.py info() / docstring(), pretty_json, profile(), run_tests()
|
|
151
152
|
│
|
|
152
153
|
├── hierarchy/ TransformData, TransformList, HierarchyData, ClipData
|
|
@@ -154,7 +155,6 @@ cgmath/
|
|
|
154
155
|
│ └── hierarchy.py the four types, the fbx / glb readers, the batched clip evaluator
|
|
155
156
|
│
|
|
156
157
|
├── geometry/ meshes, UVs, curves, fields, transfer
|
|
157
|
-
│ ├── _base.py Data / DataList / ImmutableArray + serialization
|
|
158
158
|
│ ├── mesh.py MeshData, MeshList, UVData, UVList, the loaders
|
|
159
159
|
│ ├── map.py morph_target.py skin_weights.py MapData, MorphData, SkinData
|
|
160
160
|
│ ├── bspline.py bspline_patch.py _saddle_surface.py _cdt.py
|
|
@@ -75,6 +75,7 @@ name with its real signature and first docstring line.
|
|
|
75
75
|
|
|
76
76
|
```
|
|
77
77
|
cgmath/
|
|
78
|
+
├── data.py Data / DataList / Array / ImmutableArray + serialization
|
|
78
79
|
├── utils.py info() / docstring(), pretty_json, profile(), run_tests()
|
|
79
80
|
│
|
|
80
81
|
├── hierarchy/ TransformData, TransformList, HierarchyData, ClipData
|
|
@@ -82,7 +83,6 @@ cgmath/
|
|
|
82
83
|
│ └── hierarchy.py the four types, the fbx / glb readers, the batched clip evaluator
|
|
83
84
|
│
|
|
84
85
|
├── geometry/ meshes, UVs, curves, fields, transfer
|
|
85
|
-
│ ├── _base.py Data / DataList / ImmutableArray + serialization
|
|
86
86
|
│ ├── mesh.py MeshData, MeshList, UVData, UVList, the loaders
|
|
87
87
|
│ ├── map.py morph_target.py skin_weights.py MapData, MorphData, SkinData
|
|
88
88
|
│ ├── bspline.py bspline_patch.py _saddle_surface.py _cdt.py
|
|
@@ -8,7 +8,8 @@ every saved field away from its default where that is valid:
|
|
|
8
8
|
- HierarchyData: a namespaced rig of joints, a locator, a group, a space
|
|
9
9
|
transform and the three SDF primitives (TransformData subclasses that are
|
|
10
10
|
not render classes), parented by uuid, one joint carrying a user attribute
|
|
11
|
-
of every type and the group a user attribute a built-in hides
|
|
11
|
+
of every type and the group a user attribute a built-in hides, its values
|
|
12
|
+
recorded in Unreal's axes and in meters.
|
|
12
13
|
- TransformList: a selection of that rig, one node's parent left out of it.
|
|
13
14
|
- ClipData: the rig over four frames, every framed channel moving, a frame
|
|
14
15
|
other than the first loaded, its own timebase, and a node reparented after
|
|
@@ -144,7 +145,7 @@ def rig() -> HierarchyData:
|
|
|
144
145
|
and an SDF sphere, box and cylinder used as colliders, parented by uuid.
|
|
145
146
|
The hip carries a user attribute of every type; the group a user
|
|
146
147
|
attribute named like a built-in, which the built-in hides but a save
|
|
147
|
-
keeps.
|
|
148
|
+
keeps. Its values are recorded in Unreal's axes and in meters.
|
|
148
149
|
"""
|
|
149
150
|
root = TransformData(
|
|
150
151
|
"VLR:root",
|
|
@@ -223,6 +224,8 @@ def rig() -> HierarchyData:
|
|
|
223
224
|
h = HierarchyData([root, pelvis, hip, aim, group, space, head, foot, thigh])
|
|
224
225
|
head.set_parent("VLR:pelvis", world_space=False)
|
|
225
226
|
thigh.set_parent("VLR:hip_L", world_space=False)
|
|
227
|
+
h.axis_system = "z up, -y front, right handed"
|
|
228
|
+
h.unit = 100.0
|
|
226
229
|
return h
|
|
227
230
|
|
|
228
231
|
|
|
@@ -176,6 +176,8 @@ def build_scene(texture=None) -> Scene:
|
|
|
176
176
|
angle_of_view = 40.0,
|
|
177
177
|
fit_padding = 1.25,
|
|
178
178
|
)
|
|
179
|
+
scene.axis_system = "x up, y front, right handed"
|
|
180
|
+
scene.unit = 2.54
|
|
179
181
|
|
|
180
182
|
group = TransformData(name="set", uuid=_UUIDS["set"], translate=[0.0, -1.0, 0.0])
|
|
181
183
|
props = TransformData(name="props", uuid=_UUIDS["props"], rotate=[0.0, 45.0, 0.0])
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -15,7 +15,7 @@ from enum import Enum
|
|
|
15
15
|
from typing import Dict, List, Optional, Tuple, Union
|
|
16
16
|
|
|
17
17
|
import numpy as np
|
|
18
|
-
from cgmath.
|
|
18
|
+
from cgmath.data import (
|
|
19
19
|
_as_declared,
|
|
20
20
|
_CLASSES,
|
|
21
21
|
_is_numeric_or_boolean,
|
|
@@ -104,6 +104,9 @@ class TypedDataClass(Data):
|
|
|
104
104
|
payload: Optional[dict] = None
|
|
105
105
|
child: Optional[Data] = None
|
|
106
106
|
|
|
107
|
+
# a cache it holds beside its fields
|
|
108
|
+
_STATE = ("_cache",)
|
|
109
|
+
|
|
107
110
|
|
|
108
111
|
class TypedDataList(DataList):
|
|
109
112
|
"""Test data list saving a setting of its own"""
|
|
@@ -987,9 +990,14 @@ class TestFiles(unittest.TestCase):
|
|
|
987
990
|
std_json.dump(tree, f)
|
|
988
991
|
|
|
989
992
|
# the class as a later version declares it, without first, in the
|
|
990
|
-
# module in its place, where a pickle finds it
|
|
993
|
+
# module in its place, where a pickle finds it. It no longer sets
|
|
994
|
+
# first either: a list takes no attribute its class does not declare
|
|
995
|
+
def __init__(self, iterable=None):
|
|
996
|
+
DataList.__init__(self, iterable)
|
|
997
|
+
self.second = None
|
|
998
|
+
|
|
991
999
|
listspace = {"__module__": _OrderedList.__module__, "__qualname__": _OrderedList.__qualname__}
|
|
992
|
-
listspace.update(LIST_FIELDS=("second",))
|
|
1000
|
+
listspace.update(LIST_FIELDS=("second",), __init__=__init__)
|
|
993
1001
|
later = type("_OrderedList", (_OrderedList,), listspace)
|
|
994
1002
|
module = sys.modules[_OrderedList.__module__]
|
|
995
1003
|
self.addCleanup(_register, _OrderedList)
|
|
@@ -1002,7 +1010,7 @@ class TestFiles(unittest.TestCase):
|
|
|
1002
1010
|
self.assertIs(type(back), later)
|
|
1003
1011
|
self.assertEqual(back[0].foo, 1)
|
|
1004
1012
|
self.assertEqual(back.second.foo, 5)
|
|
1005
|
-
self.
|
|
1013
|
+
self.assertNotIn("first", vars(back)) # left out
|
|
1006
1014
|
|
|
1007
1015
|
def test_a_dict_or_list_that_holds_itself_is_refused(self):
|
|
1008
1016
|
# a save walks dicts and lists for the objects they hold: one that
|
|
@@ -1252,7 +1260,7 @@ from concurrent.futures import ProcessPoolExecutor
|
|
|
1252
1260
|
from dataclasses import dataclass, field
|
|
1253
1261
|
|
|
1254
1262
|
import numpy as np
|
|
1255
|
-
from cgmath.
|
|
1263
|
+
from cgmath.data import Data
|
|
1256
1264
|
|
|
1257
1265
|
|
|
1258
1266
|
@dataclass(repr=False, eq=False)
|