是否有可能转换/导出我的3D模型(dae/blend/3ds/..)到GLSL ES 2.0



是否可以将我的3D模型导出或转换为GLSL ES 2.0?是否有任何转换器或任何导出工具/插件存在于任何编辑器程序,如Blender/3DS MAX/Maya,创建GLSL ES 2.0代码?

我想在上面提到的任何编辑器中方便地创建我的模型,然后我想将它们导出/转换为GLSL ES 2.0。

我已经有一个模板WebGL代码来显示我的着色器。我想用由转换器或导出工具自动创建的GLSL ES代码替换我的片段着色器和顶点着色器部分。

我想做这样的事情(但对于GLSL ES 2.0):Blender到GLSL

你这是在拿苹果和汽车作比较。OpenGL是一个绘图API, GLSL是一个实现着色器代码的编程语言。

3D模型两者都不是。唯一的问题是"我如何将我的3D模型转换为OpanGL?"没有意义。

有可能吗?

。因为这不是GLSL

的目的

选择一种模型文件格式(最好实现一个读取解析器)实现解析器,填充适当的数据结构,并将其提供给OpenGL的正确部分,进行正确的调用来绘制它们。

OpenGL本身不处理模型、场景甚至文件。GLSL甚至不是一种文件格式,而是一种语言。


我会从OBJ或STL文件开始。它们相当容易阅读和解释,并且与OpenGL使用的基本类型非常接近。

可能最难读的格式是。blend文件;实际上,.blend文件是Blender进程内存映像的转储。它需要一个功能齐全的Blender(或类似的东西)来理解一个。blend文件。



由于评论而更新:

请仔细阅读您链接到的导出脚本:它需要对象材料设置(不是模型本身)并生成GLSL代码,当在正确的框架中使用时(即适当的统一和属性名称,矩阵设置等)将导致阴影操作尽可能接近这些材料设置。脚本不导出模型!

你问关于导出3D模型。这将是模型的网格以及将其放置在世界中的属性。材料不是存储在OBJ或STL文件中的东西。它们是纹理,是的,还有着色器。但它们完全独立于模型数据本身。在多个模型上使用相同的材质设置是完全可能的,或者自由交换模型的材质(纹理和着色器),只要模型提供了所有必要的顶点属性来使这个材质工作。



更新2由于评论:

你知道shader是做什么的吗?如果没有,这里有一个简短的概要:您有顶点属性数据(在缓冲区中)。这些索引属性被提交给OpenGL。使用调用glDrawElements或glDrawArrays,属性被解释为原语(点,线或三角形(或旧OpenGL版本的四边形))。然后,每个原语都要经过一系列的转换。

必选:第一步是顶点着色器,它的职责是确定其在视口中的最终位置。

可选:在顶点着色顶点后,由顶点形成的原语进行镶嵌着色。镶嵌用于细化几何,例如为地形添加细节或使曲面更光滑。

可选:接下来是几何着色,它可以用(少量)顶点替换单个顶点。几何着色器甚至可以改变原始类型。例如,可以用三角形替换单个点(对于渲染粒子系统很有用)。

必选:最后一步是片段遮蔽原语。在确定了原语在视口中的位置之后,它所覆盖的每个像素都将在一个或多个片段中进行处理。片段着色器是一个决定目标帧缓冲区最终颜色和透明度的程序。

每个着色步骤由用户定义的程序控制。就是这些程序,它们被称为着色器,是用GLSL编写的。没有几何,没有模型。程序!非常简单的程序。他们不会凭空产生几何体,他们总是处理已经存在的几何体传递给OpenGL。

着色器不用于定义或存储模型。他们只是在渲染时修改它们

看看http://www.inka3d.com,它将你的Maya着色器转换为GLSL。对于模型,你需要WebGL还是OpenGL ES 2.0?

最新更新