作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试实现一个在正交相机的舞台复合体中选择和移动对象的功能。
我想得到与以下相同的示例:http://threejs.org/examples/webgl_interactive_draggablecubes.html
但不适用于透视相机。
我已经替换了:
var camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 1000 );
与:
var camera = new THREE.OrthographicCamera(window.innerWidth / -zoom, window.innerWidth / zoom, window.innerHeight / zoom, window.innerHeight / -zoom, -1000, 1000);
并替换了这个:
var ray = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );
通过这个:
var ray = projector.pickingRay( vector, camera );
但是,它似乎还不足以运行。
那么,它缺少什么?
是否可以将投影仪和射线与 OrthographicCamera 一起使用?
谢谢。
最佳答案
请在您的示例中尝试此代码:
event.preventDefault();
if (event.button === 0) {
var projector = new THREE.Projector();
var vector = new THREE.Vector3((event.clientX / window.innerWidth) * 2 - 1, -(event.clientY / window.innerHeight) * 2 + 1, 0.5);
// use picking ray since it's an orthographic camera
var raycaster = projector.pickingRay(vector, camera);
//ditermine whether any of the supplied objects are hit by this ray
var intersertsObj = raycaster.intersectObjects(_entities);
// _entities : is array entities you put to scence
// you can store this list before you entity to scence:
// _entities.push(entity);
// scene.add(entity);
if (intersertsObj.length > 0) {
var pickedObject = intersertsObj[0];
}
}
event = null;
它在我的项目中运行良好。
关于three.js - 正交相机和pickRay?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20361776/
我是一名优秀的程序员,十分优秀!