opengl - 任何想法如何翻转网格以生成对象?
问题描述
我尝试减少一个非常复杂的网格(减少文件本身的对象数据)。例如:人体。我想把它切成两半,只将半个网格数据保存在磁盘上(波前 obj)。现在我想读取数据,将其推送到渲染列表,然后...通过代码镜像/加倍。但是怎么做?;-) 有没有一种简单的方法可以做到这一点?
我搜索了 SE 和 youtube,但只找到了关于翻转法线的东西。
解决方案
通过 -1 1 1 缩放网格(通过 x 轴镜像),并通过 glFrontFace 反转面缠绕。例如在老派 OpenGL 中:
drawObject();
glPushMatrix();
glScalef(-1, 1, 1);
glFrontFace(GL_CW);
drawObject();
glFrontFace(GL_CCW);
glPopMatrix();
如果您使用着色器,则将局部缩放应用于您的 mvp 矩阵。要通过 y 轴镜像模型,请使用 1 -1 1 的比例,类似地,z 轴使用 1 1 -1 的比例。
推荐阅读
- firebase - 如何优化每次应用启动时的 Firestore 读取
- python - 在 python 中安装任何包时出错:HTTPError: 404 Client Error: Not Found for url
- mysql - MySQL/MariaDB 更新计数器组按
- protocol-buffers - 从 protobuf 生成的 Java 类有编译错误
- c# - linq:如何检查一个属性的值是否存在
- javascript - 如何让画布动画代码与多个元素一起使用?
- jupyter-notebook - 如果海龟代码让我退出 python 3 Jupyter,我可以改变什么?
- python - 包含列表的列条目上的 Pandas .isin
- opencv - 使用 cmake 和 opencv 构建“空心世界”错误:未定义对 viz 模块的引用
- python - 如何获取切换标志值和标志切换之间的行总和