场景中的静态对象 - Three.js

Mig*_*cia 5 javascript 3d three.js leap-motion

我的场景中有两个对象.我正在使用

 <script src="js/controls/LeapTrackballControls.js"  ></script>
Run Code Online (Sandbox Code Playgroud)

用于移动相机,所以感觉就像物体根据我的手的运动而旋转.

问题是另一个对象也在移动,我希望它始终在我面前.我的意思是,即使相机移动,对象也总是在画布/资源管理器内的相同位置.

对不起,如果我没有正确解释自己.

任何帮助表示赞赏.

编辑:

var controls = new THREE.LeapTrackballControls( camera , controller );
Run Code Online (Sandbox Code Playgroud)

所以,我在场景中间有一个球体.我使用LeapTrackball库将相机移动到场景中心.这使得用户感觉球体围绕其中心旋转.

model = new THREE.Mesh(modelGeo, modelMat);
model.geometry.dynamic = true;
model.position.set(0, 0, 0);
scene.add(model);
Run Code Online (Sandbox Code Playgroud)

我的问题是我有另一种形状:

myMesh = new THREE.Mesh(circleGeometry, material);
myMesh.position.set(0, 0, 10);
scene.add(myMesh);
Run Code Online (Sandbox Code Playgroud)

这也受到相机旋转的影响.我想要的是保持球体的"假旋转",而另一个网格停留在屏幕的中间(0,0,10).

好的,这是我的相机对象.

var camera = new THREE.PerspectiveCamera(55,window.innerWidth/window.innerHeight,0.1,5000);

我的渲染功能,用于更新相机的控制/移动.

   function render() {
        controls.update();
        renderer.render(scene, camera);
        doMouse();
        if(useOrbitControls){
            orbitControls.update();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我正在使用Leap控制器,这是构建它的功能:

function leapMotion() {
                var controllerOptions = {
                    enableGestures: true
                    , background: true
            , frameEventName: 'animationFrame'
                , };

[...]

    controller.on('frame', onFrame);
Run Code Online (Sandbox Code Playgroud)

基本上,这意味着onFrame函数每次收到一个帧(每秒60个aprox)就完成了.

    function onFrame(frame){
[...]
        }
Run Code Online (Sandbox Code Playgroud)

没有更多,所有的魔力来自你可以在这里找到的图书馆:

https://leapmotion.github.io/Leap-Three-Camera-Controls/

Wes*_*ley 12

如果您希望将对象(例如十字准线)固定在相机前面,则可以通过将对象添加为相机的子对象来实现.使用这样的模式:

scene.add( camera ); // required when the camera has a child
camera.add( object );
object.position.set( 0, 0, - 100 ); // or whatever distance you want
Run Code Online (Sandbox Code Playgroud)

three.js r.71