Author Topic: Bug sur Addchild d'un clone  (Read 3195 times)

0 Members and 1 Guest are viewing this topic.

ougalougou

  • Thug
  • *
  • Posts: 18
Bug sur Addchild d'un clone
« on: December 07, 2005, 02:13:56 PM »
J'ai légèrement modifié le code "HyperGraph_73" pour vérifier que l'on peut ajouter un clone d'un objet comme enfant d'un objet parent mais je n'est aucun résultats à mes attentes.
-soit il y a un bug
-soit il me manque une information pour réaliser cet objectif
Merci pour vos feedback
Voici le code  "HyperGraph_73" modifié!!
http://perso.wanadoo.fr/d.ovar/hyperion/demos/squelette/pb.zip

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2357
    • oZone3D.Net
Bug sur Addchild d'un clone
« Reply #1 on: December 07, 2005, 02:39:48 PM »
je check le pb...

JeGX

  • Global Moderator
  • Capo Crimine
  • *****
  • Posts: 2357
    • oZone3D.Net
Bug sur Addchild d'un clone
« Reply #2 on: December 07, 2005, 03:00:56 PM »
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é:

Code: [Select]

<?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.

ougalougou

  • Thug
  • *
  • Posts: 18
Thanks
« Reply #3 on: December 07, 2005, 08:02:19 PM »
Ok ,merci .J'attends la prochaine version pour réinvestir tout cela dans mon projet Squeletor!!!