Javascript 由mesh three.js修剪的平面
我有一个网格,它应该代表一个“建筑”,我想每3个单位(不同的楼层)添加一个平面,并用网格面修剪它们,使它们只出现在网格内部 我该怎么做?我搞不清楚,网格对我来说是相当复杂的,我要定义一个通常只覆盖内部的平面Javascript 由mesh three.js修剪的平面,javascript,three.js,Javascript,Three.js,我有一个网格,它应该代表一个“建筑”,我想每3个单位(不同的楼层)添加一个平面,并用网格面修剪它们,使它们只出现在网格内部 我该怎么做?我搞不清楚,网格对我来说是相当复杂的,我要定义一个通常只覆盖内部的平面 var program = new Program(reset, step) function reset() { scene.clear() scene.add(new THREE.GridHelper(100, 1)) } function step() { } prog
var program = new Program(reset, step)
function reset() {
scene.clear()
scene.add(new THREE.GridHelper(100, 1))
}
function step() {
}
program.startup()
// the points group
var spGroup;
// the mesh
var hullMesh;
generatePoints();
render();
function generatePoints() {
// add 10 random spheres
var points = [];
for (var i = 0; i < 50; i++) {
var x = Math.random() * (80 - 1) + 1 //Math.random() * (max - min) + min
var y = Math.random() * (80 - 1) + 1
var z = Math.random() * (80 - 1) + 1
points.push(new THREE.Vector3(x, y, z));
}
spGroup = new THREE.Object3D();
var material = new THREE.MeshBasicMaterial({
color: 0xff0000,
transparent: false
});
points.forEach(function(point) {
var spGeom = new THREE.SphereGeometry(0.5);
var spMesh = new THREE.Mesh(spGeom, material);
spMesh.position.copy(point);
spGroup.add(spMesh);
});
// add the points as a group to the scene
scene.add(spGroup);
// use the same points to create a convexgeometry
var hullGeometry = new THREE.ConvexGeometry(points);
hullMesh = createMesh(hullGeometry);
scene.add(hullMesh);
}
function createMesh(geom) {
// assign two materials
var meshMaterial = new THREE.MeshBasicMaterial({
color: 0x00ff00,
transparent: true,
opacity: 0.2
});
meshMaterial.side = THREE.DoubleSide;
var wireFrameMat = new THREE.MeshBasicMaterial();
wireFrameMat.wireframe = true;
// create a multimaterial
var mesh = THREE.SceneUtils.createMultiMaterialObject(geom, [meshMaterial, wireFrameMat]);
return mesh;
}
var程序=新程序(重置,步骤)
函数重置(){
场景。清除()
scene.add(新的三个.GridHelper(100,1))
}
函数步骤(){
}
program.startup()
//积分组
spvar组;
//网格
瓦尔·赫尔梅什;
生成点();
render();
函数generatePoints(){
//添加10个随机球体
var点=[];
对于(变量i=0;i<50;i++){
var x=Math.random()*(80-1)+1//Math.random()*(max-min)+min
var y=Math.random()*(80-1)+1
var z=Math.random()*(80-1)+1
点推(新的三矢量3(x,y,z));
}
spGroup=new THREE.Object3D();
var材料=新的三网格基本材料({
颜色:0xff0000,
透明:假
});
点。forEach(函数(点){
var spGeom=新的三倍比色法(0.5);
var spMesh=新的三个网格(spGeom,材料);
spMesh.position.copy(点);
spGroup.add(spMesh);
});
//将点作为一个组添加到场景中
场景。添加(spGroup);
//使用相同的点创建凸面几何体
var hullGeometry=新的三个凸几何体(点);
hullMesh=createMesh(hullGeometry);
场景。添加(hullMesh);
}
函数createMesh(geom){
//分配两种材料
var meshMaterial=新的三点网格基本材质({
颜色:0x00ff00,
透明:是的,
不透明度:0.2
});
meshMaterial.side=3.DoubleSide;
var wireFrameMat=新的三个.MeshBasicMaterial();
wireFrameMat.wireframe=true;
//创建多重材质
var mesh=THREE.SceneUtils.createMultiMaterialObject(geom,[meshMaterial,wireFrameMat]);
回流网;
}
var spGeom=新的三点球面法(0.5);,我不明白为什么会有一个球体,似乎你的逻辑需要重新思考。上传一张预期结果的图片,给出一个更好的想法avar spGeom=new THREE。SphereGeometry(0.5);,我不明白为什么会有一个球体,似乎你的逻辑需要重新思考。上传一张预期结果的图片,给出一个更好的想法