El tem es ke yo ya tengo mi propia escena kreada kon papervision3d y el problema es ke no se komo aplikar el kodigo para ke la kamara siga el movimiento del kursor del raton. En el tutorial sale un kodigo ke he probado y funciona kon la esfera, pero kuando intento aplikarlo a mi escena, no hay manera.... Perdonad de ante mano ke soy neofito en la materia programacion y seguramente sea algo mas sencillo de lo ke yo kreo!.
El kodigo de mi escena es el siguiente:
Código :
import org.papervision3d.components.as3.flash9.PV3DColladaScene;
import org.papervision3d.events.InteractiveScene3DEvent;
import org.papervision3d.events.FileLoadEvent;
import org.papervision3d.scenes.InteractiveScene3D;
import org.papervision3d.objects.DisplayObject3D;
scene3d.addEventListener(PV3DColladaScene.SCENE_COMPLETE, handleInit);
scene3d.addEventListener(PV3DColladaScene.SCENE_LOAD_PROGRESS, handleProgress);
scene3d.addEventListener(PV3DColladaScene.SCENE_LOAD_ERROR, handleLoadError);
function handleInit(...rest):void
{
/*
* The code below is an example of getting mouse events from a DisplayObject3D in your collada scene -
* YOU MUST USE INTERACTIVE MATERIALS TO RECEIVE MOUSE EVENTS
* */
var my3DObject:DisplayObject3D = scene3d.collada.getChildByName("esfera");
my3DObject.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, handleObjectClick);
my3DObject.addEventListener(InteractiveScene3DEvent.OBJECT_OVER, handleObjectOver);
my3DObject.addEventListener(InteractiveScene3DEvent.OBJECT_OUT, handleObjectOut);
/*
* The code below is an example of getting mouse events from the InteractiveSceneManager, which dispatches
* events for all interactive objects in a scene.
* */
/*
scene3d.scene.interactiveSceneManager.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS, handleMousePress);
scene3d.scene.interactiveSceneManager.addEventListener(InteractiveScene3DEvent.OBJECT_RELEASE, handleMouseRelease);
scene3d.scene.interactiveSceneManager.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, handleMouseClick);
scene3d.scene.interactiveSceneManager.addEventListener(InteractiveScene3DEvent.OBJECT_OVER, handleMouseOver);
scene3d.scene.interactiveSceneManager.addEventListener(InteractiveScene3DEvent.OBJECT_OUT, handleMouseOut);
scene3d.scene.interactiveSceneManager.addEventListener(InteractiveScene3DEvent.OBJECT_MOVE, handleMouseMove);
scene3d.scene.interactiveSceneManager.addEventListener(InteractiveScene3DEvent.OBJECT_RELEASE_OUTSIDE, handleReleaseOutside);
*/
}
// COLLADA Scene event handlers ===================================
function handleProgress(e:FileLoadEvent):void
{
trace(Math.floor(e.bytesLoaded/e.bytesTotal)*100);
}
function handleLoadError(e:FileLoadEvent):void
{
trace("Collada load error", e.file, e.message);
}
// Individual DisplayObject3D event handlers ===================================
function handleObjectOut(e:InteractiveScene3DEvent):void
{
trace("out", e.displayObject3D.name);
}
function handleObjectOver(e:InteractiveScene3DEvent):void
{
trace("over", e.displayObject3D.name);
}
function handleObjectClick(e:InteractiveScene3DEvent):void
{
trace("click", e.displayObject3D.name);
}
// InteractiveSceneManager event handlers ===================================
function handleMousePress(e:InteractiveScene3DEvent):void
{
trace("press", e.displayObject3D.name);
}
function handleMouseRelease(e:InteractiveScene3DEvent):void
{
trace("release", e.displayObject3D.name);
}
function handleReleaseOutside(e:InteractiveScene3DEvent):void
{
trace("releaseOutside");
}
function handleMouseClick(e:InteractiveScene3DEvent):void
{
trace("click", e.displayObject3D.name);
}
function handleMouseOver(e:InteractiveScene3DEvent):void
{
trace("over", e.displayObject3D.name);
}
function handleMouseOut(e:InteractiveScene3DEvent):void
{
trace("out", e.displayObject3D.name);
}
function handleMouseMove(e:InteractiveScene3DEvent):void
{
trace("move", e.displayObject3D.name);
}Todo esto lo tengo pegado en el primer frame del timeline. Funciona bien, pero no se donde lolokar la parte donde la kamara sigue al raton ke sale en el mencionado tuotial de arriba:
Código :
function loop3D(event:Event):void {
//esfera.yaw( 5 );
escena.renderCamera( camara );
esfera.rotationX = -contenedor.mouseY/4;
esfera.rotationY = -contenedor.mouseX/4;
}
En mi kaso seria interesante ke se pudise aplikar esa funcion en la escena3d collada ke he importado desde componentes papervision3d.
gracias a todos!
[Zah]Usa las etiquetas code[/Zah]
