我成功加载了一个 obj 文件,但我正在尝试通过用两个点标记 3d 模型并在它们之间画一条直线来添加测量工具。 类似于Potree的东西(不幸的是,它不支持.obj文件)。当我使用三个.js时,怎么能做到这一点。
- 添加
mousedown
侦听器 - 从
camera
到鼠标位置的光线投射 - 将交点 A、B 另存为
Vector3
- 计算 A、B 之间的距离
缩短代码:
function onDocumentMouseDown( event ) {
var vector = new THREE.Vector2();
vector.set(
( event.clientX / window.innerWidth ) * 2 - 1,
- ( event.clientY / window.innerHeight ) * 2 + 1 );
var raycaster = new THREE.Raycaster();
raycaster.setFromCamera( vector, camera );
var intersects = raycaster.intersectObjects( model.children );
if ( intersects.length > 0 ) {
pointA = intersects[ 0 ].point;
// some logic to save pointB
// on the second click...
//pointB = intersects[ 0 ].point;
var distance = pointA.distanceTo( pointB );
// draw Line
var geometry = new THREE.Geometry();
geometry.vertices.push( pointA );
geometry.vertices.push( pointB );
var material = new THREE.LineBasicMaterial();
line = new THREE.Line( geometry, material );
scene.add(line);
}
}
工作示例,距离输出在控制台中:http://jsfiddle.net/kgxs7afv/1/
三.js r107