Three.js 如何连接属于两个不同几何体的两个独立顶点?

Three.js 如何连接属于两个不同几何体的两个独立顶点?,three.js,Three.js,在同一位置 这是我的密码: var cubeGeometry1 = new THREE.BoxGeometry(20,20,20); var cubeMesh1 = new THREE.Mesh(cubeGeometry1, material1); var cubeGeometry2 = new THREE.BoxGeometry(20, 20, 20); var cubeMesh2 = new THREE.Mesh(cubeGeometry2, material1); scene.add(

在同一位置

这是我的密码:

var cubeGeometry1 = new THREE.BoxGeometry(20,20,20);
var cubeMesh1 = new THREE.Mesh(cubeGeometry1, material1);

var cubeGeometry2 = new THREE.BoxGeometry(20, 20, 20);
var cubeMesh2 = new THREE.Mesh(cubeGeometry2, material1);

scene.add(cubeMesh1);
scene.add(cubeMesh2);
这是我需要连接在一起的两个顶点。我需要找到它们之间的中间世界坐标,一旦完成,我需要将它们相互转换(实际上是将它们合并到同一个点)

这是我到目前为止所做的——尽管这不起作用,我也不完全理解代码

function getPointInBetweenByPerc(pointA, pointB, percentage)
{
    var dir = pointB.clone().sub(pointA);
    var len = dir.length();
    dir = dir.normalize().multiplyScalar(len*percentage);

    return pointA.clone().add(dir);
}
var pointToTransform = getPointInBetweenByPerc(myPoint1, myPoint2, 0.5);
console.log(pointToTransform);
cubeGeometry1.vertices[0].x = pointToTransform.x; //only applies to local matrix?
cubeGeometry2.vertices[5].x = pointToTransform.x;

我只想将几何体A中的顶点A与几何体B中的顶点B合并。

如果我没有弄错,您可以使用
.localToWorld()
.worldToLocal()
方法:

var scene=new THREE.scene();
var摄像机=新的三透视摄像机(60,window.innerWidth/window.innerHeight,11000);
相机。位置。设置(-2,3,5);
var renderer=new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.append(renderer.domeElement);
var controls=新的三个.OrbitControls(摄影机、渲染器.doElement);
var box1=new THREE.Mesh(new THREE.BoxGeometry(),new THREE.MeshBasicMaterial({
颜色:“红色”,
线框:正确
}));
框1.位置.设置(0,0,0);
场景。添加(框1);
var box2=new THREE.Mesh(new THREE.BoxGeometry(),new THREE.MeshBasicMaterial({
颜色:“蓝色”,
线框:正确
}));
框2。位置。设置(1、2、3);
场景。添加(框2);
btnMerge.addEventListener(“单击”,函数(){
让vertex1=box1.localToWorld(box1.geometry.vertexts[0].clone());
让vertex2=box2.localToWorld(box2.geometry.vertexts[3].clone());
设中点=顶点1.add(顶点2).multiplyScalar(0.5);
box1.geometry.Vertex[0]。复制(box1.worldToLocal(vertex1.copy(中点));
box2.geometry.Vertex[3].复制(box2.worldToLocal(vertex2.copy(中点));
box1.geometry.verticesNeedUpdate=true;
box2.geometry.verticesNeedUpdate=true;
},假);
render();
函数render(){
请求动画帧(渲染);
渲染器。渲染(场景、摄影机);
}
正文{
溢出:隐藏;
保证金:0;
}


合并
请提供更多信息,如此处所述:请看,我做了一些更改
function getPointInBetweenByPerc(pointA, pointB, percentage)
{
    var dir = pointB.clone().sub(pointA);
    var len = dir.length();
    dir = dir.normalize().multiplyScalar(len*percentage);

    return pointA.clone().add(dir);
}
var pointToTransform = getPointInBetweenByPerc(myPoint1, myPoint2, 0.5);
console.log(pointToTransform);
cubeGeometry1.vertices[0].x = pointToTransform.x; //only applies to local matrix?
cubeGeometry2.vertices[5].x = pointToTransform.x;