是否可以制作一些精灵/物体来复制自己并弯曲成曲线? 我做了一个图像来表明我的意思:
此处曲线,可能是贝塞尔曲线路径为绿色,几何体显示为黑色。我希望精灵或对象(在左侧)复制自身并将其顶点与最后一个副本合并,而最后两个顶点跟随曲线。 如果是的话,该怎么做?有关于这样的事情的文件吗?你做过这样的事吗?怎么样?
编辑:我不希望精灵或对象在路径中移动,但有点复制本身并将其自身与其副本合并。
答案 0 :(得分:2)
是的,您想要做的事情可以奏效,而您的绘图则展示了它的运作方式。伪代码看起来像这样:
curveLength = <length of entire curve>;
tileLength = <length of 1 tile>;
currentLength = 0;
while (currentLength < curveLength)
{
currentTileLength = 0;
startPt = prevPt = calculateBezierAt(0.0);
for (t = delta; (t < 1) && (currentTileLength < tileLength); t += delta) // delta is up to you. I often use 1/100th
{
nextPt = calculateBezierAt(t);
distance = distanceBetween(prevPt, nextPt);
currentTileLength += distance;
currentLength += distance;
prevPt = nextPt;
}
endPt = prevPt;
// Calculate quad here
}
要计算每个四边形,您需要在起点和终点生成垂线。然后你的四边形有4个点。
请注意,我假设只有一个bezier,我简化了一些事情。通常情况下,你会将它们中的许多连接在一起,所以迭代它们比我上面说的要复杂一点,但它不应该太难。
另请注意,如果您的角落非常紧,或者曲线自行回转,您可能会看到看起来很糟糕的结果。如果你自己生成曲线,可能你会避免这种情况。
答案 1 :(得分:0)
看看SCNShape,它从Bézier曲线生成SceneKit几何体。