Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/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 Three.js-获得低多边形外观_Javascript_Html_Three.js_3d - Fatal编程技术网

Javascript Three.js-获得低多边形外观

Javascript Three.js-获得低多边形外观,javascript,html,three.js,3d,Javascript,Html,Three.js,3d,我正在尝试以低多边形样式生成一些地形,以供参考,这种样式: 我的意思是每个三角形都有一个阴影 当我尝试这样做时,阴影非常平滑。下面是一个只有几个三角形的示例: (来源:) 我还尝试添加阴影,但这也没有产生想要的效果。这是一张包含更多三角形并添加阴影的照片: (来源:) 通过查看这三个文档,materials类上的shading属性听起来似乎可以做到这一点,但Three.FlatShading和Three.NoShading似乎没有任何效果 有没有一个特殊的技术,我需要使用创造这种效果?如果

我正在尝试以低多边形样式生成一些地形,以供参考,这种样式:

我的意思是每个三角形都有一个阴影

当我尝试这样做时,阴影非常平滑。下面是一个只有几个三角形的示例:


(来源:)

我还尝试添加阴影,但这也没有产生想要的效果。这是一张包含更多三角形并添加阴影的照片:


(来源:)

通过查看这三个文档,materials类上的shading属性听起来似乎可以做到这一点,但Three.FlatShading和Three.NoShading似乎没有任何效果

有没有一个特殊的技术,我需要使用创造这种效果?如果您能为我指点方向,我将不胜感激

你可以找到我的第一个演示

非常感谢,


Will

编辑:此答案已过时。更新:

material.shading=三。FlatShading
现在是
material.FlatShading=true

您修改了
平面几何图形的顶点位置

要使用
MeshLambertMaterial
生成平面着色,必须通过调用

geometry.computeFlatVertexNormals();
对于其他材质,只需设置
material.flatShading=true
即可获得平坦外观


three.js r.87

你需要几何体上的未折叠法向量。你好@jAre,谢谢你的回复。如何创建未折叠的法向量?谷歌似乎没有告诉我太多关于未借贷法线的信息。对不起,我的3D知识相当有限。我把这个项目作为一个学习活动。它只是当法向量垂直于多边形而不是平滑时。要获得所需的向量,需要使用面法线覆盖几何体的顶点法线。所以你需要做的是迭代你的几何体的所有面,然后复制到每个顶点法向量的法向面上。就是这样!谢谢你的回复。如果你们中的一个写下这个作为答案,我会接受。但是computeVertexNormals()不会插值法向量,正如它的名字,你会得到一个平滑的着色,这不是问题的内容?你回答的第二部分对我来说似乎很困惑。@GuyGood我回答的第一部分是问题的答案。我添加的答案的第二部分只是为了比较。谢谢各位的回答,这很有意义,也很有帮助。你能解释一下如何使用
THREE.FlatShading
?“问题或答案中没有解释。”卢克更新了答案。不幸的是,这个问题有点复杂,因为所有材料在这方面的行为并不相同。