Graphics 是否可以将我的三维模型(dae/blend/3ds/…)转换/导出为GLSL ES 2.0?

Graphics 是否可以将我的三维模型(dae/blend/3ds/…)转换/导出为GLSL ES 2.0?,graphics,opengl-es,3d,glsl,blender,Graphics,Opengl Es,3d,Glsl,Blender,是否可以将我的三维模型导出或转换为GLSL ES 2.0?是否存在用于创建GLSL ES 2.0代码的任何编辑器程序(如Blender/3DS MAX/Maya)的转换器或导出器工具/插件 我想在上述任何编辑器中方便地创建模型,然后将它们导出/转换为GLSL ES 2.0 我已经有了显示着色器的模板WebGL代码。我想用由转换器或导出器工具自动创建的GLSL ES代码替换片段着色器和顶点着色器部分 我想这样做(但对于GLSL ES 2.0): 你在这里把苹果和汽车作比较。OpenGL是一种绘图A

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

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

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

我想这样做(但对于GLSL ES 2.0):
你在这里把苹果和汽车作比较。OpenGL是一种绘图API,GLSL是一种用于实现着色器代码的编程语言

三维模型都不是这样。唯一的问题“如何将我的3D模型转换为OpanGL?”毫无意义

可能吗

不,因为那不是GLSL的目的

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

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


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

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



因评论而更新: 请仔细阅读您链接的导出器脚本的功能:它接受对象材质设置(而不是模型本身)并生成GLSL代码,当在正确的框架中使用时(即适当的统一和属性名称、矩阵设置等)将产生尽可能接近这些材质设置的着色操作脚本不导出模型

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



更新2由于评论: 你知道着色器是做什么的吗?如果没有,这里有一个简短的概要:您有顶点属性数据(在缓冲区中)。这些索引属性将提交给OpenGL。使用对glDrawElements或GLDrawArray的调用,属性被解释为基本体(点、线或三角形(或早期OpenGL版本中的四边形))。然后,每个基元都要进行多次变换

强制性:第一步是顶点着色器,其职责是确定其在视口中的最终位置

可选:顶点着色后,顶点形成的基本体将进行镶嵌着色。细分用于细化几何体,例如为地形添加细节或使曲面更平滑

可选:接下来是几何体着色,它可以用(少量)顶点替换单个顶点。几何体着色器甚至可以更改基本体类型。因此,例如,可以将单个点替换为三角形(用于渲染粒子系统)

强制性:最后一步是对基本体进行分段着色。确定基本体在视口中的位置后,它覆盖的每个像素将在一个或多个片段中处理。片段着色器是一个程序,用于确定目标帧缓冲区中的最终颜色和半透明性

每个着色步骤由用户定义的程序控制。正是这些程序,它们被称为着色器,是用GLSL编写的。没有几何,没有模型。程序!而且是非常简单的程序。它们不会从无到有地生成几何体,它们总是处理传递给OpenGL的现有几何体


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

看看是什么将Maya着色器转换为GLSL的。对于这些模型,您需要WebGL或OpenGL ES 2.0吗?

您能描述一下您想要实现的目标吗?我知道导出程序会生成代码,但一般来说,模型会转换成适合程序用途的数据格式,然后再加载。我刚刚刷新了我原来的问题。请查看新添加的最后几行。编辑的行仍然没有意义。以OBJ文件为例:模型由具有以下信息的顶点组成-位置、法线、纹理坐标。这些顶点需要通过OpenGL ES调用发送到GPU进行进一步处理。然后,GLSL着色器对所有加载的顶点执行若干并行计算,以计算位置(gl_位置)和颜色(gl_FragColor)。总之,OpenGL ES会将您的模型数据发送到GPU,GLSL会对该数据执行操作。对不起,可能我没有足够详细。我更新了我原来的问题。请看一看。OBJ和STL文件:谢谢你的提示@datenwolf在模型/文件和GLSL/OpenGL ES两个方面都做了很好的解释。请看这个网站:iquilezles.org/apps/shadertoy。在我看来,这个网站有一个基本的WebGL引擎,用户只需更改着色器代码即可更改显示的场景,而无需更改代码的任何其他部分。我想做类似的事情。换言之,我的问题是:我想