A priori le pb vient du clonage des orphelins (dans ton cas le sous mesh "Solid" que tu as enlevé du modèle "bones"). Le workaround est de ne pas enlever "Solid" de "bones" et de mettre "bones" en render state false. Ensuite tu clones dans lua ton objet "Solid". Le petit trick est que la fonction Clone() ajoute automatiquement le nouveau clone dans l'arbre de scène. Donc avant de le mettre enfant d'un autre objet, il faut le retirer de la scène. Il faut aussi remettre le render state du clone à 1. Voilà le code re-modifié:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<hyperion version="1.0">
<scene name="HyperGraph_73" display_fps="TRUE"
show_ref_grid="TRUE" vsync="TRUE" />
<camera name="Main_Camera" fov="60.0" >
<position y="100.0" z="250.0" />
<lookat y="30.0" />
</camera>
<light name="light01" >
<position y="100.0" z="200.0" />
</light>
<model name="bras" filename="bras.3ds" lighting="TRUE"
polygon_mode="WIREFRAME" >
<remove_child name="b1" />
<remove_child name="b2" />
<remove_child name="b3" />
<remove_child name="rot_soc_b1" />
<remove_child name="rot_b1_b2" />
<remove_child name="rot_b2_b3" />
</model>
<model name="bones" filename="bone.3ds" lighting="TRUE"
polygon_mode="WIREFRAME" render="FALSE" >
<!--remove_child name="Solid" /-->
</model>
<mesh name="b1" shape_type="MODEL_SUB_MESH" display_tripod="FALSE"
parent_name="bras" >
<position x="0.0" y="-20.0" z="0.0" />
<pivot_position x="0.0" y="0.0" z="0.0" />
</mesh>
<mesh name="socle" shape_type="MODEL_SUB_MESH" display_tripod="FALSE"
parent_name="bras" >
<add_child name="rot_soc_b1" />
<pivot_position x="0.0" y="0.0" z="0.0" />
</mesh>
<mesh name="rot_soc_b1" shape_type="MODEL_SUB_MESH" display_tripod="FALSE"
auto_spin="TRUE" parent_name="bras">
<spin_values y="65.0" z="45.0" />
<add_child name="b1" />
<pivot_position x="0.0" y="20.0" z="0.0" />
</mesh>
<script name="init_bras" run_mode="EXECUTE_ONCE" >
<raw_data>
<![CDATA[
id_clone = HYP_Object.Clone( "Solid", "hello" );
HYP_Scene.RemoveObject( "hello" );
HYP_Object.SetRenderState( "hello" ,1 );
HYP_Object.SetPosition( "hello" ,0, 100, 0 );
HYP_Object.AddChild( "rot_soc_b1", "hello" );
-- HYP_Scene.RemoveObject( id_clone );
-- HYP_Object.SetRenderState( id_clone ,1 );
-- HYP_Object.SetPosition( id_clone ,0, 100, 0 );
-- HYP_Object.AddChild( "rot_soc_b1", id_clone );
]]>
</raw_data>
</script>
</hyperion>
Ce code est fonctionnel sur la version 1.0.4 qui sera dispo dans les prochaines heures et normalement sur la 1.0.2 aussi.