相关疑难解决方法(0)

从3D立方贝塞尔曲线路径获得一致的法线

我正在编写一个包含BezierPoints列表的BezierPath类.每个BezierPoint都有一个位置,一个inTangent和一个outTangent:

在此输入图像描述

BezierPath包含从路径获取线性位置和切线的函数.我的下一步是提供从路径中获取法线的功能.

我知道3D中的任何给定线都将具有无限数量的垂直线,因此不会有一个设定的答案.

我的目标是让用户能够在每个BezierPoint上指定法线(或滚动角?),我将在它之间进行插值以获得沿路径的法线.我的问题是我不知道如何选择起始切线(默认切线应该是什么?).

我第一次尝试获取起始切线是使用Unity3D方法Quaternion.LookRotation:

Quaternion lookAt = Quaternion.LookRotation(tangent);
Vector3 normal = lookAt * Vector3.up;
Handles.DrawLine(position, position + normal * 10.0f);
Run Code Online (Sandbox Code Playgroud)

这导致以下结果(绿线是切线,蓝线是法线):

在此输入图像描述

在大多数情况下,这似乎是一个很好的基础结果,但看起来在某些方向上有突然的变化:

在此输入图像描述

所以我的问题是:是否有一种很好的方法可以获得3D中线条的一致默认法线?

谢谢,Ves

3d bezier unity-game-engine normals

7
推荐指数
1
解决办法
3809
查看次数

标签 统计

3d ×1

bezier ×1

normals ×1

unity-game-engine ×1