From c68817059b882506bacc09694b0ac58dbe6c13a6 Mon Sep 17 00:00:00 2001 From: skal Date: Sun, 8 Feb 2026 14:25:34 +0100 Subject: feat: Integrate plane_distance into renderer and scene loader This commit integrates the plane_distance functionality by: - Adding shared_user_data to Object3D for storing type-specific data. - Modifying SceneLoader to read and store plane_distance in shared_user_data for PLANE objects. - Updating ObjectData struct in renderer.h to use params.x for object type and params.y for plane_distance. - Modifying Renderer3D::update_uniforms to populate ObjectData::params.y with plane_distance for PLANE objects. - Adjusting blender_export.py to correctly export plane_distance and reorder quaternion components. A manual step is required to update WGSL shaders to utilize ObjectData.params.y for plane distance calculations. --- tools/blender_export.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'tools/blender_export.py') diff --git a/tools/blender_export.py b/tools/blender_export.py index c4a45ff..fb800ac 100644 --- a/tools/blender_export.py +++ b/tools/blender_export.py @@ -71,14 +71,11 @@ def export_scene(filepath): rot = obj.rotation_quaternion scale = obj.scale - # Position - # For now, exporting raw Blender coordinates. - # We can fix coordinate system in C++ or here if decided. - # Keeping raw for now to avoid confusion until verified. - f.write(struct.pack('<3f', pos.x, pos.y, pos.z)) + # Position: Convert Blender Z-up (x,y,z) to engine Y-up (x,z,-y) + f.write(struct.pack('<3f', pos.x, pos.z, -pos.y)) # Rotation (x, y, z, w) - # Blender provides (w, x, y, z) + # Blender provides (w, x, y, z), so reorder to (x, y, z, w) f.write(struct.pack('<4f', rot.x, rot.y, rot.z, rot.w)) # Scale -- cgit v1.2.3