我正在使用three.js创建一个折纸效果图像转换(即用当前图像对对象进行纹理化,将对象中的片段折叠(可能是用彩色清洗),下载下一个图像,然后展开对象以显示新的图像)。我想要写一个引擎,可以产生不同的形状取决于专辑。
到目前为止的设计是根据折叠的位置来定义分段,移动要折叠的部分的Z指数,然后在移位的方向旋转段(和任何附加的段) 180度。
问题是,似乎存在旋转物体的函数,但据我所见,没有分段。除了手工重新计算分段外,还有什么方法可以旋转对象的分段吗?
发布于 2018-11-06 14:14:54
做你想要做的事情的问题是(如果我正确理解的话),你在不断更新几何缓冲区,而这反过来又需要不断地重新发送到GPU。对于小网格来说,这可能有足够好的性能,但是它仍然是一个通常昂贵的操作。
另一种方法是考虑你的“折叠”是如何发生的,并围绕着它设计一组对象。例如,要对角线折叠一个正方形,需要两个三角形。如果每个三角形都是一个网格,那么您可以对每个三角形应用特定的旋转来模拟沿着公共边缘折叠的过程。因此,对于你想要产生的任何折叠效果,只需创建一组网格,并定义它们如何折叠/折叠。
两帧之间的差异是不可察觉的。这些未折叠的图像都将被映射成相同的图像,也许是在一个平面上。然后,在单个框架内,将框架交换为可折叠的网格集合,然后开始动画。通过使用UV坐标,可以将图像映射到与单个平面相同的集合,从而将图像上的关键点与折叠段的顶点连接起来。
如果这有用的话,很好。如果你有问题,或想要一个例子,让我知道,虽然我没有时间把一个复杂的演示现在。
https://stackoverflow.com/questions/53164316
复制相似问题