Data Viz, Pixel Hacking et Prog 3D – Status: INACTIVE

H3D Haptics : X3D et Python

November 20th, 2009 Posted in 3D, Python, Technologies




www.h3dapi.org


Comme nous n’avons pas perdu de vue les évolutions du X3D, nous sommes toujours ouverts à des découvertes comme celle de H3D et de son API qui propose de rendre les scènes X3D “touchables” via des dispositifs de téléprésence (bras articulés, gants et autres) c’est ce que l’on nomme l’haptique…

H3D est une extension des nodes X3D existants. Exemple tout simple, pour rajouter une sensation de réponse à une surface on glisse un élément supplémentaire au node Appearance:

<X3D profile='Immersive' version='3.0'>
  <Scene>
    <Group>
      <Viewpoint position="0 0 0.6"/>
      <Shape>
        <Appearance>
          <Material diffuseColor="1 0 0"/>
          <SmoothSurface stiffness="0.4"/>  <---- ajout pour H3D
        </Appearance>
        <Sphere radius="0.05"/>
      </Shape>
    </Group>
  </Scene>
</X3D>

plutôt élégant non ?

il y a mieux, H3D permet de lier X3D et Python :
Via les ROUTES et les Fields de X3D on adresse des scripts et des classes python.

Ici le “IsTouched” d’une sphère reçoit l’info du champ “changeColor” qui est instance de classe python.

le script:

# Import H3D specific functions.
from H3DInterface import *
# ChangeColor is a field that takes and MFBool as input and outputs an SFColor
# The field routed to this class is the isTouched field of X3DGeometryNode
class ChangeColor( TypedField( SFColor, MFBool ) ):
# Only using routes for this field so  only override the update function.
  def update( self, event ):
# The inputed field is initially zero length.
    if len(event.getValue()) > 0 and event.getValue()[0]:
      # If touched return green color
      return RGB(0, 1, 0)
    else:
      # If not touched return red color
      return RGB(1, 0, 0)

# Create an instance of our field. This name is what will be used
# when routing to and from the field.
changeColor = ChangeColor()

et le node X3D:
  <PythonScript DEF="PS" url="mypythonfile.py" />

  <ROUTE fromNode="MySphere" fromField="isTouched"
         toNode="PS" toField="changeColor" />
  <ROUTE fromNode="PS" fromField="changeColor"
         toNode="MyMaterial" toField="diffuseColor" />
  </Scene>
</X3D>

Tags: , , ,

  1. 3 Responses to “H3D Haptics : X3D et Python”

  2. By JeGX on Nov 20, 2009

    A ton avis il y a une lib plus generale qui pourrait être utilisée avec GeeXLab?

  3. By SPRINGER on Nov 20, 2009

    Pour une lib d’interface haptique j’ai pas cherché à fond mais il y avait ce truc pour la wiimote
    http://www.visualrelativity.com/vpython/

    et peut être des labos de medecine qui utilisent python…

    note que les gars de H3D ont aussi un module pour lier X3D et le ARTag toolkit pour la réalité augmentée.

  1. 1 Trackback(s)

  2. Nov 22, 2009: HackLAB | JeGX's Infamous Lab

Sorry, comments for this entry are closed at this time.