Maya 中不正确的贝塞尔曲线

问题描述 投票:0回答:1

我使用 decasteljau 算法实现了符合数学规则的贝塞尔曲线。我已经使用其他库(例如 OpenNURBS)测试了我的实现,并且我们的结果匹配。但是,当我在 Maya 中使用相同的控制顶点创建贝塞尔曲线时,曲线不正确。

示例:

import maya.cmds as mc

mc.curve( d=3, p=[(-1,0,0), (-1,2,0), (0,1,0), (1,2,0), (1,0,0)] )
mc.nurbsCurveToBezier( )

为了评估曲线,我创建了一个定位器并使用运动路径约束并将 U 值设置为 0.5。

screenshot from maya on the left and library results (unit tests) on the right

当 t=0.5 评估该曲线时,maya 返回

( 0.0, 1.5, 0.0 )
,而正确答案是
{ 0 , 1.375 , 0 }

我是否在 Maya 中正确创建了贝塞尔曲线?如果是这样,为什么我看到不同的结果?

maya bezier
1个回答
0
投票

嗯...您已经指定了一条 3 次曲线,有 5 个控制点。 我认为您实际上想要 4 次曲线? (因为如果你只实现了一个朴素的贝塞尔曲线类型,我猜你在使用 5 个点时将所有内容提高到 4 次方?)

import maya.cmds as mc

# 4th power here perhaps?
mc.curve( d=4, p=[(-1,0,0), (-1,2,0), (0,1,0), (1,2,0), (1,0,0)] )
mc.nurbsCurveToBezier( )

我依稀记得Maya只支持1、3、5、7度?所以我不确定该代码是否真的有效? (这可能只是创建曲线工具的限制,不确定?)

© www.soinside.com 2019 - 2024. All rights reserved.