首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在three.js中将法线渲染到对象的表面

如何在three.js中将法线渲染到对象的表面
EN

Stack Overflow用户
提问于 2017-04-04 18:50:13
回答 1查看 2.5K关注 0票数 1

我在threejs.org中找到了绘制箭头法线的the example,这就是我所需要的。但箭头是由ArrowHelper创建的复杂对象。我查看了源代码,找到了setDirection方法。

代码语言:javascript
复制
function setDirection( dir ) {

    // dir is assumed to be normalized

    if ( dir.y > 0.99999 ) {

        this.quaternion.set( 0, 0, 0, 1 );

    } else if ( dir.y < - 0.99999 ) {

        this.quaternion.set( 1, 0, 0, 0 );

    } else {

        axis.set( dir.z, 0, - dir.x ).normalize();

        radians = Math.acos( dir.y );

        this.quaternion.setFromAxisAngle( axis, radians );

    }

};

我试着用四元数来实现为Vector3设置旋转的算法,但是我仍然有看着{x: 0, y: 0, z: 0}的norlams。

我的问题是:如何计算一个矢量,以便从曲面到空间绘制一条法线,从而获得相同的图片:

更新

我使用CylinderGeometry。

UPD2

我已经解决了。Look at my codepen

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-04 22:50:01

您希望查看网格的顶点法线。您可以像这样使用VertexNormalsHelper

代码语言:javascript
复制
var vnh = new THREE.VertexNormalsHelper( mesh, 1, 0xff0000 );
scene.add( vnh );

VertexNormalsHelper

three.js r.84

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43205098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档