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
Javascript 创建自定义形状几何图形的三个JS_Javascript_Three.js_Shape - Fatal编程技术网

Javascript 创建自定义形状几何图形的三个JS

Javascript 创建自定义形状几何图形的三个JS,javascript,three.js,shape,Javascript,Three.js,Shape,我一直在尝试使用THREE.js 3D构建和可视化一个令人兴奋的城市。对于这个,我有大约1000栋建筑的坐标。由于每个建筑都可以有任意n个角,所以不可能使用立方体测量法,因此我尝试创建一个自定义几何体,但没有太多成功。buildingCoords指定建筑相对于场景中心的所有建筑坐标,它还包括每个建筑的楼层高度坐标和屋顶高度坐标。 问题是,当我这样渲染它时,它没有考虑任何高度(不知何故,拉伸设置给了它一个高度,而不是建筑物的实际高度),此外,拉伸设置给了它非常奇怪的整体形状。 最大的问题是我找不到

我一直在尝试使用THREE.js 3D构建和可视化一个令人兴奋的城市。对于这个,我有大约1000栋建筑的坐标。由于每个建筑都可以有任意n个角,所以不可能使用立方体测量法,因此我尝试创建一个自定义几何体,但没有太多成功。buildingCoords指定建筑相对于场景中心的所有建筑坐标,它还包括每个建筑的楼层高度坐标和屋顶高度坐标。 问题是,当我这样渲染它时,它没有考虑任何高度(不知何故,拉伸设置给了它一个高度,而不是建筑物的实际高度),此外,拉伸设置给了它非常奇怪的整体形状。 最大的问题是我找不到任何关于挤压工作原理的文档,我尝试了很多不同的挤压设置变量值,但我无法得到任何接近我所寻找的结果:(,这是一个在给定坐标上有角的建筑,没有奇怪的曲线或变形的形状

以下是一栋建筑的示例:

        var buildings = [];
        var buildingCoords = [new THREE.Vector3(-330.8653652173956,-312.7242347826201,0),new THREE.Vector3(-329.8339913043564,-310.8272434783638,0),new THREE.Vector3(-324.56661739130294,-313.6665913044507,0),new THREE.Vector3(-325.6655217391161,-315.69250434781463,0),new THREE.Vector3(-330.8653652173956,-312.7242347826201,0),new THREE.Vector3(-330.8653652173956,-312.7242347826201,6.75304347826087),new THREE.Vector3(-329.8339913043564,-310.8272434783638,6.75304347826087),new THREE.Vector3(-324.56661739130294,-313.6665913044507,6.75304347826087),new THREE.Vector3(-325.6655217391161,-315.69250434781463,6.75304347826087),new THREE.Vector3(-330.8653652173956,-312.7242347826201,6.75304347826087)];
        buildingShape = new THREE.Shape(buildingCoords);
        var extrusionSettings = {amount: 10, bevelEnabled: true, bevelSegments: 3, steps: 4, bevelThickness: 8, material: 0, extrudeMaterial: 1};
        var buildingGeometry = new THREE.ExtrudeGeometry(buildingShape, extrusionSettings);
        var buildingMaterial = new THREE.MeshPhongMaterial({color: 0xcccccc});  
        var building = new THREE.Mesh(buildingGeometry,buildingMaterial );
        buildings.push(building);
        scene.add(building);

我看到你在buildingCoords中使用了建筑物的上下平面

使用“拉伸设置”中的“数量”参数设置建筑高度

应仅使用下平面(前半部分,其中Z坐标为0)


如何包含建筑物的高度?请尝试使用尺寸参数而不是高度。如果在“挤出几何体”中使用高度变量,则每个建筑物的高度仍然相同。=/虽然看起来稍微好一些,但建筑物高度必须精确。我现在使用的示例是:var extrusionSettings={身高:9.208695652173914,bevelEnabled:false};也许我忘了什么?下面是一个在浏览器中显示的示例:大小也不起作用不幸的是,看起来还是一样。我凭直觉使用了“数量:”。这似乎起作用。谢谢你的帮助!