Добрый вечер, интересует такой вопрос как добавить 3D объект в определённое место на сцене.
Т.е есть movie clip и в нём ещё 2 movie клипа, в movie clip 1 должна быть интерактивная часть, при наведении мыши в movie clip 2 должно выводится сообщение, как такое реализовать не совсем понятно, подскажите кто знает.
Пример во вложении.
Исходник кода вот. Использую движок PV3D

Код AS3:
package
{
import flash.geom.Rectangle;
import flash.events.*;
import flash.ui.Keyboard;
import org.papervision3d.cameras.CameraType;
import org.papervision3d.events.InteractiveScene3DEvent;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.view.BasicView;
import org.papervision3d.objects.DisplayObject3D;
[SWF(width="512", height="576")]
public class BookContent extends BasicView
{
public var keyForward:Boolean;
public var keyBackward:Boolean;
public var keyLeft:Boolean;
public var keyRight:Boolean;
private var isOribiting:Boolean = false;
private var cameraPitch:Number = 90;
private var cameraYaw:Number = 270;
private var cameraTarget:DisplayObject3D = DisplayObject3D.ZERO;
private var differenceX:Number = 0;
private var differenceY:Number = 0;
public function BookContent ()
{
super(512,576,true,false,CameraType.FREE);
addEventListener(Event.ADDED_TO_STAGE,initCameraControll);
//initCameraControll();
//camera.x = 400;
//camera.y = 400;
init ();
startRendering ();
}
private function init ():void
{
viewport.interactive = true;
for (var i:int=0; i < 20; i++)
{
var plane_mat = new ColorMaterial(Math.random() * 0xFFFFFF);
plane_mat.smooth = true;
plane_mat.doubleSided = true;
plane_mat.interactive = true;
var plane_obj = new Plane(plane_mat,200,200,1,1);
plane_obj.addEventListener (InteractiveScene3DEvent.OBJECT_OVER , doInteractions);
plane_obj.x = Math.random() * 800 - 400;
plane_obj.y = Math.random() * 800 - 400;
plane_obj.z = Math.random() * 800 - 400;
scene.addChild (plane_obj);
}
}
private function doInteractions (e:InteractiveScene3DEvent):void
{
camera.target = e.displayObject3D;
}
override protected function onRenderTick (event:Event = null):void
{
moveCamera ();
super.onRenderTick ();
}
// Управление Камерой
private function initCameraControll (event:Event):void
{
stage.addEventListener (KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener (KeyboardEvent.KEY_UP, keyUpHandler);
}
private function keyDownHandler (e:KeyboardEvent):void
{
switch (e.keyCode)
{
case "W".charCodeAt() :
keyForward = true;
break;
case "S".charCodeAt() :
keyBackward = true;
break;
case "A".charCodeAt() :
keyLeft = true;
break;
case "D".charCodeAt() :
keyRight = true;
break;
}
}
private function keyUpHandler (e:KeyboardEvent):void
{
switch (e.keyCode)
{
case "W".charCodeAt() :
keyForward = false;
break;
case "S".charCodeAt() :
keyBackward = false;
break;
case "A".charCodeAt() :
keyLeft = false;
break;
case "D".charCodeAt() :
keyRight = false;
break;
}
}
private function moveCamera ():void
{
if (keyForward)
{
//camera.zoom += 1;
camera.moveForward (30);
}
else if (keyBackward)
{
//camera.zoom -= 1;
camera.moveBackward (30);
//if ( camera.scaleZ == 100 || camera.scaleZ == -100)
//camera.scaleZ = 0;
//else
//camera.moveBackward (30);
}
if (keyRight)
{
isOribiting = true;
differenceX = stage.x + 1;
//camera.moveRight (5);
//camera.localRotationY+=1;
}
else if (keyLeft)
{
isOribiting = true;
differenceX = stage.x - 1;
//camera.moveLeft (5);
//camera.localRotationY -= 1;
}
if (isOribiting) {
cameraYaw += differenceX;
cameraPitch += differenceY;
cameraPitch %= 360;
cameraYaw %= 360;
cameraPitch = cameraPitch > 0 ? cameraPitch : 0.0001;
cameraPitch = cameraPitch < 90 ? cameraPitch : 89.9999;
camera.orbit(cameraPitch, cameraYaw, true, cameraTarget);
isOribiting = false;
}
}
}
}
И ещё один вопрос, как ограничить приближении камеры, т.е методы moveBackward (Forward )