【发布时间】:2016-05-10 23:35:24
【问题描述】:
我知道这里已经有几个类似的问题,但答案对我想要实现的目标并没有真正的帮助。正如标题所示,我希望在 OpenGL 中将纹理投影到 3D 模型(准确地说是其 UV 映射纹理)上。这个视频中展示了最好的例子 - https://www.youtube.com/watch?v=pT4bx4J4NQQ
在 cmets 中,作者提到他“将画笔所在的枪的每个像素投影回 UV 空间并更新原始纹理”。我假设他是通过渲染一个额外的 UV 通道来做到这一点的,该通道允许他用画笔纹理中的像素替换可见像素。像往常一样,说起来容易做起来难:主要问题是当我们缩小模型并开始投影时,并非所有模型的 UV 都会在屏幕空间中看到,因此重新放大应该会显示“洞”(模型的UV 太小,无法在屏幕空间中渲染)。
所以我的问题是 - 从远处绘画时如何避免这些孔?投影映射不是这里的答案,因为它会影响画笔结束的所有面,甚至是可见表面后面的面。超级采样也无法处理极端情况,而且会非常缓慢。
我也怀疑他是否会检查模型的所有纹理像素以确定它们是否位于画笔下方,因为增加其大小或创建画笔会显着减慢速度。
【问题讨论】:
-
你有没有在这方面取得任何进展?我一开始就卡住了。
标签: opengl textures paint projection brush