Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用three.js在两个管几何图形之间绘制平面_Three.js - Fatal编程技术网

使用three.js在两个管几何图形之间绘制平面

使用three.js在两个管几何图形之间绘制平面,three.js,Three.js,我使用THREE.CatmullRomCurve3()点创建了两个TubeBufferGeometry。 我要做的是填充这两个管子之间的区域 var closedSpline = new THREE.CatmullRomCurve3( [ new THREE.Vector3( -60, -100, 0 ), new THREE.Vector3( -60, 20, 0 ), new THREE.Vector3( -60, 120, 0 ), new THREE.Vector3( 60

我使用
THREE.CatmullRomCurve3()
点创建了两个TubeBufferGeometry。 我要做的是填充这两个管子之间的区域

var closedSpline = new THREE.CatmullRomCurve3( [
new THREE.Vector3( -60, -100,  0 ),
new THREE.Vector3( -60,   20,  0 ),
new THREE.Vector3( -60,  120,  0 ),
new THREE.Vector3(  60,   120, 0 ),
new THREE.Vector3(  60, -100, 0 )] );
closedSpline.curveType = 'catmullrom';
closedSpline.closed = true;

var closedSpline1 = new THREE.CatmullRomCurve3( [
new THREE.Vector3(-50, -90,  0),
new THREE.Vector3(-50, 10,  0 ),
new THREE.Vector3(-50, 110,  0 ),
new THREE.Vector3(50, 110, 0 ),
new THREE.Vector3(50, -90, 0 )
] );
closedSpline1.curveType = 'catmullrom';
closedSpline1.closed = true;

var tubeGeometry = new THREE.TubeBufferGeometry( closedSpline, 100, 1,5, true 
);

var material = new THREE.MeshLambertMaterial( { color: 0xb00000, wireframe: 
false } );
var mesh = new THREE.Mesh( tubeGeometry, material );
scene.add( mesh );

var tubeGeometry1 = new THREE.TubeBufferGeometry( closedSpline1, 100, 1,5, 
true );

var material1 = new THREE.MeshLambertMaterial( { color: 0xb00000, wireframe: 
false } );
var mesh1 = new THREE.Mesh( tubeGeometry1, material1 );
scene.add( mesh1 );
上面是创建两个管几何体的代码。 有人能告诉我正确的方向或任何相关的例子来填充两个管子之间的区域吗。谢谢


在这张图中,我有两个红色的管子在工作。我正在寻找一种在这两个管之间绘制平黄色区域的方法。

作为选项,您可以使用带孔的
THREE.Shape()

var scene=new THREE.scene();
var摄像机=新的三透视摄像机(60,window.innerWidth/window.innerHeight,11000);
摄像机位置设置(0,10300);
var renderer=new THREE.WebGLRenderer({
反别名:对
});
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.appendChild(renderer.doElement);
var controls=新的三个.OrbitControls(摄影机、渲染器.doElement);
var灯=新的三方向灯(0xffffff,0.5);
灯。位置。设置刻度(100);
场景。添加(灯光);
添加(新的三个环境光(0xffffff,0.5));
var closedSpline=新的3.CatmullRomCurve3([
新的三矢量3(-60,-100,0),
新三个矢量3(-60,20,0),
新的三矢量3(-60,120,0),
新的三个矢量3(60,120,0),
新三。向量3(60,-100,0)
]);
closedSpline.curveType='catmullrom';
closedSpline.closed=true;
var closedSpline1=新的3.CatmullRomCurve3([
新的三矢量3(-50,-90,0),
新的三矢量3(-50,10,0),
新的三矢量3(-50110,0),
新的三个矢量3(50,110,0),
新三。矢量3(50,-90,0)
]);
closedSpline1.curveType='catmullrom';
closedSpline1.closed=true;
var tubeGeometry=新的三个.TubeBufferGeometry(closedSpline,100,1,5,true);
var material=新的3.0网格LambertMaterial({
颜色:0xb00000,
线框:错误
});
var网格=新的三个网格(管几何体、材料);
场景。添加(网格);
var tubeGeometry1=新的三个TubeBufferGeometry(闭合样条1、100、1、5、,
正确的);
var material1=新的3.0网格LambertMaterial({
颜色:0xb00000,
线框:错误
});
var mesh1=新的三个网格(管几何1,材料1);
场景。添加(网格1);
//魔法从这里开始
var shape=new THREE.shape(closedSpline.getPoints(100));//成形
shape.holes.push(新的三点路径(closedSpline1.getPoints(100));//加个洞
var shapeGeometry=新的三个。shapeGeometry(shape);//创建几何图形
var track=新的三点网格(shapeGeometry,新的三点网格LambertMaterial({
颜色:“黄色”,
线框:错误
})); // 从几何图形创建轨迹
场景。添加(曲目);
render();
函数render(){
请求动画帧(渲染);
渲染器。渲染(场景、摄影机);
}
正文{
溢出:隐藏;
保证金:0;
}


哇,真神奇。非常感谢。你能解释一下getpoints(100)是什么意思吗?@GAURANGKORANT不客气:)
.getpoints()
沿曲线返回(你设置的除法量+1)个点。读一下,谢谢。当我将closedSpline、closedSpline1、z轴值更改为0以外的值时,上述解决方案无法按预期工作。你有什么想法吗?@GAURANGKORANT是的,我有:)看看这个和这个。我在上面的评论链接中尝试了你的答案。还是一样的结果。我已经修改了上述答案中的要点。如果你能看到问题所在。