【发布时间】:2020-03-29 12:40:21
【问题描述】:
如果某个摇滚明星能够真正快速地查看我的代码并告诉我为什么我无法渲染/查看我的 three.js 模型,我将永远欠你的债! 我将发布整个脚本,但我认为一些初步信息很重要。基本上,我有成千上万的点看起来像这样:
472232.14363148 2943288.56768013 200.129142"
472237.03086105 2943289.62356560 200.119496"
472241.91809061 2943290.67945108 200.109851"
472246.80532018 2943291.73533656 200.100205"
...and so on...
还有一堆像这样的脸:
["1021 1020 1061", "640 754 641", "1534 1633 1535", "4701 27 26", "654 753 655", ...and so on...
当我提取所有数据并正确配置后,我将其推送到几何体并尝试将其添加到场景中,但没有成功。这是整个脚本:
var renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 1000 );
camera.position.set( 0, 50, 50 );
camera.lookAt( 0, 0, 0 );
var scene = new THREE.Scene();
var material = new THREE.MeshStandardMaterial( { color : 0x00cc00 } );
var geometry = new THREE.Geometry();
var points = bigData['LandXML']['Surfaces']['Surface']['Definition']['Pnts']['P']
var faces = bigData['LandXML']['Surfaces']['Surface']['Definition']['Faces']['F']
for(i=0;i<points.length;i++){
var [point1,point2,point3] = points[i]['__text'].split(' ').map(Number)
//point1 *= .00001
//point2 *= .00001
//point3 *= .00001
geometry.vertices.push(new THREE.Vector3(point1,point2,point3))
}
for(i=0;i<faces.length;i++){
console.log(faces[i]);
var [face1,face2,face3] = faces[i].split(' ').map(Number)
var face = new THREE.Face3(face1 - 1,face2 - 1, face3 - 1)
geometry.faces.push(face)
}
scene.add( new THREE.Mesh( geometry, material ) );
您可以看到在 for 循环中的点,我将它们乘以 .00001 来缩放模型,因为否则数字会非常大,如果这有意义的话。我从每个面上减去 1,因为数据不是零索引的。无论如何,如果任何编码超级英雄花时间阅读本文并有一些见解,请帮助我!谢谢!
【问题讨论】:
-
组装几何体后,告诉它构建它的边界框 (
geometry.computeBoundingBox();)。然后,检查框的角和中心的值 (geometry.boundingBox) 以确保您的相机甚至 看 在正确的位置。这不保证您的相机的近/远会捕捉到盒子里的东西。 -
@TheJim01 感谢您的意见,我很感激并会尝试一下。如果您想自己尝试,这里是该项目。再次,我真的很感谢你到目前为止的帮助。 s000.tinyupload.com/index.php?file_id=68384489612738199144
-
光在哪里?
-
@soju 我不知道我需要一个,你认为这有帮助吗?我以前从来没有用过三个.js 的灯...
-
你在哪里渲染你的场景?
标签: javascript html web three.js 3d