Overblog Suivre ce blog
Editer la page Administration Créer mon blog
/ / /

Donc voilà  une petite explication pour intégrer du Flash comme texture dans une application VRML / X3D, gràce au viewer BS-Contact...  :D

Tout d'abord l'entête :

#VRML V2.0 utf8

DEF WorldInfo WorldInfo {
    title "Test "
    info [        
    ]
}


Après l'EXTERNPROTO :


EXTERNPROTO FlashMovieTexture[
    exposedField SFBool loop
    exposedField SFFloat speed
    exposedField MFString url
    exposedField SFTime startTime
    exposedField SFTime stopTime
    exposedField SFBool repeatS
    exposedField SFBool repeatT
    ## eventIn SFBool set_pause
    eventIn SFBool set_unload
    eventOut SFTime duration
    eventOut SFBool isActive
    eventOut SFTime mediaTime
    eventOut SFVec2f imageSize
    eventOut SFFloat imageAspect
    exposedField SFBool scaleImage
    exposedField MFString parameter
    exposedField SFInt32 currentFrame
    exposedField SFInt32 totalFrames
    exposedField SFString flashVars
    eventIn SFTime set_pause
    eventIn SFTime set_play
    eventIn SFTime set_stop
    eventIn SFTime set_rewind
    eventIn SFTime set_back
    eventIn SFTime set_forward
    eventIn SFInt32 set_frame
    eventIn MFString set_variable
    eventIn SFBool set_mouseActive
    eventIn SFVec2f set_mousePosition
]
["urn:inet:bitmanagement.de:node:FlashMovieTexture","http://www.bitmanagement.de/vrml/protos/nodes.wrl#FlashMovieTexture","nodes.wrl#FlashMovieTexture"]


On défini notre petite animation d'intro :

     DEF BoxXForm Transform {
        scale 32 24 24
        children [
            DEF Clicker TouchSensor {}
            # Run once for 2 sec.
            DEF TimeSource TimeSensor { cycleInterval 2.0 }
            # Animate one full turn about Y axis:
            DEF Animation OrientationInterpolator {
                key      [ 0,      .33,       .66,        1.0 ]
                keyValue [ 0 1 0 0, 0 1 0 2.1, 0 1 0 4.2, 0 1 0 0 ]
            }


C'est maintenant que l'on rajoute notre texture, vous remarquerez que l'on rajoute la fonction stream pour lire notre flashMovie

           DEF _Shape Shape {
                appearance Appearance {texture DEF MV FlashMovieTexture {
                        loop TRUE
                        repeatS FALSE repeatT FALSE
                        stream TRUE
                        url [
                            "http://www.dailymotion.com/swf/k2f5uNcE80vdmrOkS3&related=1.swf"
                            ]   
                        parameter [ "width=425" "height=344" "subtexture" ]
                    }}
                geometry Box {}
            }
        ]
    }

on fait les ROUTE pour valider

#ROUTE Clicker.touchTime TO TimeSource.startTime
ROUTE TimeSource.fraction_changed TO Animation.set_fraction
ROUTE Animation.value_changed TO BoxXForm.rotation

Maintenant nous passons au script qui va permettre de définir la durée de notre FlashMovie en récupérant le temps réel du fichier Flash

# startup timer
DEF initTS TimeSensor {
    cycleInterval 0.1
    loop TRUE
}
DEF S Script {
    eventIn SFTime mediaTime
   
    eventIn SFTime mediaDuration

    eventIn SFTime set_startTime
   
    eventOut SFTime startTime

    url "javascript:
   
    function set_startTime(t) {
        //Browser.print(t);
        Browser.setDescription('Starting Media track ...');
        startTime = t+0.2;
    }

    function mediaTime(t) {
        Browser.print(t);
    }
    function mediaDuration(t) {
        Browser.print('Media duration '+t);

        Browser.setDescription('Media duration '+t);
    }

    "
}

Et pour finir les ROUTE

ROUTE initTS.cycleTime TO S.set_startTime
ROUTE initTS.cycleTime TO initTS.set_stopTime
ROUTE S.startTime TO MV.set_startTime


ROUTE Clicker.isActive TO MV.set_mouseActive
ROUTE Clicker.hitTexCoord_changed TO MV.set_mousePosition

#ROUTE MV.mediaTime TO S.mediaTime
ROUTE MV.duration TO S.mediaDuration


Donc en gros, pour passer une texture flash en gardant l'interactivité, il vous suffit de récupérer ce code, de changer le cube par votre objet avec ses coordonnées UV, de rajouter ses animations et le tour est joué... 

Partager cette page

Repost 0
Published by

Présentation

  • : Le Petit Infographiste, le blog
  • : Voici le blog du e-magazine, Le Petit Infographiste, traitant de la 3D, 2D, temps réel, Web3D, Photographie et jeux vidéo...
  • Contact

Recherche