纹理展开和纹理映射
1.Projective Urban Texturing (blender+opengl)
这篇文章是用OpenGL来完成纹理映射,用Blender完成纹理展开的。
Projective Urban Texturing
1.1 OpenGL和Blender是如何对应的
在Blender中导入或创建您想要纹理化的3D模型,并设置好相机位置和投影方式。
在Blender中对3D模型进行UV展开,生成一个空白的纹理地图,并保存为图片文件。
在OpenGL中加载3D模型和空白的纹理地图,并将它们绑定到一起。
在OpenGL中使用文章中提供的神经网络和纹理传播模块,根据您选择的真实城市风格,生成并更新纹理地图。
其中,在OpenGL中加载3D模型和空白的纹理地图,并将它们绑定到一起的具体步骤如下:
首先,您需要在OpenGL中加载3D模型。这可以通过使用OpenGL的顶点缓冲区对象(VBO)来完成。VBO是一种用于存储顶点数据的缓冲区对象,可以通过调用glGenBuffers、glBindBuffer和glBufferData等函数来创建和使用。
接下来,您需要在OpenGL中加载空白的纹理地图。这可以通过使用OpenGL的纹理缓冲区对象(TBO)来完成。TBO是一种用于存储纹理数据的缓冲区对象,可以通过调用glGenTextures、glBindTexture和glTexImage2D等函数来创建和使用。
然后,您需要将3D模型和纹理地图绑定到一起。这可以通过调用glBindTexture函数来完成。在调用该函数时,您需要指定要绑定的纹理单元和要绑定的纹理ID。
最后,您需要将纹理坐标传递给着色器程序。这可以通过使用OpenGL的顶点数组对象(VAO)来完成。VAO是一种用于存储顶点属性数据的缓冲区对象,可以通过调用glGenVertexArrays、glBindVertexArray和glVertexAttribPointer等函数来创建和使用。
1.2 PUT输出接口说明
1.2.1 Extract viewpoints and renderings from a scene
1.2.1.1 Use smart-unwrap to create uv coordinates and store your mesh as .obj file.
Use smart-unwrap to create uv coordinates
- 选择要创建UV坐标的网格。
- 进入编辑模式。
- 按下A键,这将选择所有面。
- 按下U键,选择Smart Unwrap。
- 在弹出的窗口中,调整选项以满足您的需求。
- 点击“OK”以应用Smart Unwrap。
store your mesh as .obj file
- 选择要导出的网格。
- 按下Tab键,进入对象模式。
- 选择“文件”菜单中的“导出”选项。
- 在弹出的窗口中,选择“Wavefront(.obj)”格式。
- 在“导出OBJ”窗口中,勾选“包括UV”选项。(默认勾选)
- 点击“导出”按钮。
导出UV模板
1.2.1.2 grayscales rendering and viepoints’ rotation and tranlation matrices.