我的场景中有两个物体。我正在使用
<script src="js/controls/LeapTrackballControls.js" ></script>
来移动相机,因此感觉就像物体根据我的手的旋转而旋转一样。
问题是另一个对象也在移动,我希望它始终位于我的面前。我的意思是,即使相机移动了,对象也始终位于画布/浏览器内部的同一位置。
抱歉,如果我没有正确解释自己。
任何帮助表示赞赏。
编辑:
var controls = new THREE.LeapTrackballControls( camera , controller );
因此,我在场景中间有一个球体。我使用LeapTrackball库在场景中心附近移动相机。这使用户感到球体围绕其中心旋转。
model = new THREE.Mesh(modelGeo, modelMat);
model.geometry.dynamic = true;
model.position.set(0, 0, 0);
scene.add(model);
我的问题是我有另一种形状:
myMesh = new THREE.Mesh(circleGeometry, material);
myMesh.position.set(0, 0, 10);
scene.add(myMesh);
这也受相机旋转的影响。我想要的是保持球体的“假旋转”,而另一个网格保持在屏幕的中间(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();
}
}
我使用的是Leap控制器,这是建立它的功能:
function leapMotion() {
var controllerOptions = {
enableGestures: true
, background: true
, frameEventName: 'animationFrame'
, };
[...]
controller.on('frame', onFrame);
基本上,这意味着onFrame函数每次接收到一个帧时都会完成(每秒60个aprox)。
function onFrame(frame){
[...]
}
仅此而已,所有的魔力都来自库,您可以在这里找到:
如果要将对象(例如十字准线)固定在相机的前面,可以通过将该对象添加为相机的子对象来实现。使用这样的模式:
scene.add( camera ); // required when the camera has a child
camera.add( object );
object.position.set( 0, 0, - 100 ); // or whatever distance you want
three.js r.71
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句