3d 如何在+;三js

3d 如何在+;三js,3d,three.js,mesh,3d,Three.js,Mesh,我在两个向量之间有一条直线 我正在尝试添加新的雪碧网格线。和新网格(精灵)设置位置到线的中心。 按以下代码 let midLoc = { x: ((fromLoc.x + toLoc.x) / 2), y: ((fromLoc.y + toLoc.y) / 2), z: ((fromLoc.z + toLoc.z) / 2) }; let midOffset = new TH

我在两个向量之间有一条直线

我正在尝试添加新的雪碧网格线。和新网格(精灵)设置位置到线的中心。 按以下代码

        let midLoc = {
            x: ((fromLoc.x + toLoc.x) / 2),
            y: ((fromLoc.y + toLoc.y) / 2),
            z: ((fromLoc.z + toLoc.z) / 2)
        };

        let midOffset = new THREE.Vector3(midLoc.x, midLoc.y, midLoc.z);

        this.setPosition(midOffset.x, midOffset.y + 20, midOffset.z);
中心位置上的新网格:-

{请单击此链接获取图像,因为无法粘贴图像,因为声誉不超过10:p}


但我想将新网格位置设置为“从位置到位置附近”或“到位置”。

作为一个选项,您可以通过以下方式执行此操作:

绿色-开始,蓝色-结束,红色-中间

var scene=new THREE.scene();
var摄像机=新的三透视摄像机(60,window.innerWidth/window.innerHeight,11000);
摄像机位置设置(0,5,10);
var renderer=new THREE.WebGLRenderer({
反别名:对
});
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.appendChild(renderer.doElement);
var controls=新的三个.OrbitControls(摄影机、渲染器.doElement);
添加(新的三个.GridHelper(10,10));
变量点=[
新的3.Vector3(-5,1,2),//开始
新的3.Vector3(4,3,-1)//结束
]
var lineGeom=new THREE.Geometry();
lineGeom.vertices=点;
var线=新的三线(lineGeom,新的三线基本材质({
颜色:“黄色”
}));
场景。添加(行);
var middpoint=new THREE.Vector3().addVectors(点[0],点[1])。多重刻度(0.5);
var midMarker=新的三网格(新的三网格球面测量法(0.125,4,2),新的三网格基本材料({
颜色:“红色”
}));
中点标记。位置。复制(中点);
场景。添加(中间标记);
var directionFrom=new THREE.Vector3()。子向量(点[1],点[0])。规格化();
var directionTo=directionFrom.clone().negate();
var fromMarker=新的三网格(新的三网格球面法(0.25,4,2)),新的三网格基本材质({
颜色:“绿色”
}));
fromMarker.position.copy(点[0]).add(方向自);
场景。添加(从标记);
var-toMarker=新的三网格(新的三网格球面测量法(0.25,4,2),新的三网格基本材料({
颜色:“蓝色”
}));
toMarker.position.copy(点[1])添加(方向到);
场景。添加(toMarker);
render();
函数render(){
请求动画帧(渲染);
渲染器。渲染(场景、摄影机);
}
正文{
溢出:隐藏;
保证金:0;
}

非常感谢您快速准确的回复。它起作用了!我非常想计算直线方向上的点。很好的逻辑。