Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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
Javascript 由mesh three.js修剪的平面_Javascript_Three.js - Fatal编程技术网

Javascript 由mesh three.js修剪的平面

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

我有一个网格,它应该代表一个“建筑”,我想每3个单位(不同的楼层)添加一个平面,并用网格面修剪它们,使它们只出现在网格内部

我该怎么做?我搞不清楚,网格对我来说是相当复杂的,我要定义一个通常只覆盖内部的平面

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);,我不明白为什么会有一个球体,似乎你的逻辑需要重新思考。上传一张预期结果的图片,给出一个更好的想法