Better narration processing

This commit is contained in:
2026-01-22 17:15:19 +03:00
parent 4b24d85123
commit cd91174f5d
23 changed files with 1301 additions and 367 deletions

View File

@@ -1,6 +1,6 @@
project(building-parts)
set(PARTS_FILES pier.blend)
set(FURNITURE_FILES furniture.blend)
set(FURNITURE_FILES furniture.blend furniture-sofa.blend)
set(PARTS_OUTPUT_DIRS)
foreach(PARTS_FILE ${PARTS_FILES})
get_filename_component(FILE_NAME ${PARTS_FILE} NAME_WE)

View File

@@ -49,9 +49,10 @@ def export_root_objects_to_gltf(output_dir):
else:
desc["tags"] = []
desc["sensors"] = []
desc["actions"] = []
desc["positions"] = []
for child in obj.children:
if child.name.startswith("sensor-"):
if child.name.startswith("action-"):
if not "action" in child:
continue
if not "height" in child:
@@ -64,29 +65,29 @@ def export_root_objects_to_gltf(output_dir):
local_rot_d = ogre_local_matrix.to_quaternion()
local_pos = [round(x, 4) for x in local_pos_d]
local_rot = [round(x, 4) for x in local_rot_d]
sensor = {}
sensor["position_x"] = local_pos[0]
sensor["position_y"] = local_pos[2]
sensor["position_z"] = local_pos[1]
sensor["rotation_w"] = local_rot[0]
sensor["rotation_x"] = local_rot[1]
sensor["rotation_y"] = local_rot[2]
sensor["rotation_z"] = local_rot[3]
sensor["height"] = child["height"]
sensor["radius"] = child["radius"]
sensor["action"] = child["action"]
action = {}
action["position_x"] = local_pos[0]
action["position_y"] = local_pos[1]
action["position_z"] = local_pos[2]
action["rotation_w"] = local_rot[0]
action["rotation_x"] = local_rot[1]
action["rotation_y"] = local_rot[2]
action["rotation_z"] = local_rot[3]
action["height"] = child["height"]
action["radius"] = child["radius"]
action["action"] = child["action"]
if "action_text" in child:
sensor["action_text"] = child["action_text"]
action["action_text"] = child["action_text"]
else:
sensor["action_text"] = child["action"].capitalize()
action["action_text"] = child["action"].capitalize()
if "name" in child:
sensor["name"] = child["name"]
action["name"] = child["name"]
else:
sensor["name"] = desc["name"] + "_" + str(len(desc["sensors"]))
sensor["furniture"] = {}
sensor["furniture"]["name"] = desc["name"]
sensor["furniture"]["tags"] = desc["tags"]
sensor["positions"] = []
action["name"] = desc["name"] + "_" + str(len(desc["actions"]))
action["furniture"] = {}
action["furniture"]["name"] = desc["name"]
action["furniture"]["tags"] = desc["tags"]
action["positions"] = []
for schild in child.children:
if schild.name.startswith("position-"):
local_matrix = schild.matrix_local
@@ -107,8 +108,8 @@ def export_root_objects_to_gltf(output_dir):
position["rotation_x"] = local_rot[1]
position["rotation_y"] = local_rot[2]
position["rotation_z"] = local_rot[3]
sensor["positions"].append(position)
desc["sensors"].append(sensor)
action["positions"].append(position)
desc["actions"].append(action)
if child.name.startswith("position-"):
local_matrix = child.matrix_local
ogre_local_matrix = basis_change @ local_matrix @ basis_change.inverted()

Binary file not shown.