我正在使用three.js创建一个折纸效果图像过渡(即,使用当前图像对对象进行纹理处理,将对象中的片段折叠起来,也许用彩色清洗,然后下载下一个图像,然后将对象展开到展示新的。)我想写一个引擎,可以根据专辑产生不同的形状。
到目前为止,该设计是根据折痕的位置来定义片段,将要折叠的片段的Z索引移动,然后将片段(和所有附加片段)沿移位方向旋转180度
麻烦的是,似乎有旋转对象的功能,但据我所知,没有分段。没有手动重新计算分段,是否有任何方法可以旋转对象的分段?
答案 0 :(得分:1)
按照您想做的方式做事(如果我理解正确的话)的问题是,您正在不断更新几何缓冲区,而这又需要不断地重新发送给GPU。对于小型网格来说,这可能具有足够好的性能,但是它仍然是一个昂贵的操作。
一种不同的处理方法是考虑如何进行“折叠”,并围绕该对象设计对象组。例如,要对角折叠一个正方形,您将需要两个三角形。如果每个三角形都是网格,则可以对每个三角形应用特定的旋转,以模仿沿公共边缘折叠的旋转。因此,无论您想产生什么折叠效果,只需创建一组网格并定义如何展开/折叠。
两个帧之间的差异可能无法察觉。展开的图像将全部映射为相同的图像,也许映射到平面上。然后,在单个框架内,将框架交换为可折叠的网格集合,然后开始制作动画。通过使用UV坐标,图像可以映射到与单个平面相同的集合,该坐标将图像上的关键点绑定到折叠段的顶点。
如果这有帮助,那就太好了。如果您有疑问或想要举个例子,请告诉我,尽管我现在没有时间整理一个复杂的演示。