问题标签 [collada]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - COLLADA 混合:基于纹理的透明度
我现在要做的是让我的 COLLADA 进口商在一些透明的 COLLADA 模型上工作。模型混合由COLLADA 规范在第 7 章“渲染/确定透明度”段落中指定。
简而言之,混合方程有两个输入:Trasparent和Trasparency;前者可以是 RGBA 颜色或纹理,后者只能是浮点值。此外,Transparent可以指定两个混合方程(ColladaFxOpaqueType.AlphaOne和ColladaFxOpaqueType.RgbZero):
这是两个混合方程:
我现在实现的是在透明表示颜色(以及两个混合方程)的情况下混合几何。下面是实现此功能的特殊代码:
粗略地说,上面的代码抽象了 OpenGL 层,相当于:
我想要的是支持基于纹理的透明度(确实删除了那个可怕的NotSupportedException)。通常,这可以通过将纹理附加到输出的片段 alpha 分量,并像往常一样设置混合(Alpha 和 OneMinusAlpha 混合因子)来实现,但遗憾的是,上述方程无法实现这一点(不会混合 alpha 分量,不是是吗?)。
PS您可以注意到我已经使用简单的解决方案实现了混合,但基于恒定的混合颜色(blendFactors
代码中的变量)(实际上使用 GL_EXT_blend_color 扩展)。如何通过使用正常的混合功能来消除这种依赖关系?我认为最后一个问题的解决方案可以帮助我了解基于纹理的混合......
transparency - Collada 模型透明度未在three.js 中加载
我有一个与这篇文章类似的问题,使用相同的模型,也加载了 Collada 加载器。
车窗在three.js中不显示为透明。你无法看穿它们。
在挖掘了three.js对象数据结构之后,看起来窗口的材质设置了 opacity = 1 和 transparent = false 。
正如上面引用的帖子中所建议的那样,我尝试了三个.js 的发行版和开发版,但没有任何运气。
我还尝试在材质对象(在调试器中)中手动将不透明度设置为 0.3 并将透明设置为 true,然后出现透明度!(虽然有些闪烁)。
知道有什么问题吗?是 Collada 加载程序的问题吗?
更新:在一个更简单的模型上存在同样的问题:
谢谢
马丁
java - Java 中的 Collada 接口
我正在寻找一个库来处理collada
文件,Java
以便我可以读取网格数据并将其呈现在我自己的jogl
显示器中。
是否有任何已经存在的图书馆Java
?
webgl - Three.js 中的 Collada 加载程序限制
在 Three.js 中,Collada Loader 无法加载超过大约 65000 个顶点的模型,我知道这是因为 WebGL 的限制,但也许可以将模型划分为不同的缓冲区?那么有没有办法加载大型 Collada 模型?
谢谢。
image - 将纹理文件包含到 collada 文件中
我想将我的纹理图像文件包含到我的 collada 文件中。现在我有很多文件:.dae 本身和 .png 纹理文件。
但是我只想要一个文件:.dae,但其中包含纹理。
我可以以某种方式将 .png 图像存储在 .dae 文件本身中吗?可能吗?先感谢您!
macos - 如何在 SceneKit 中获取纹理的文件名
我想在 MacOS 上使用 SceneKit 来加载 Collada 文件并获取场景节点属性以将它们与我自己的场景图一起使用。
我可以轻松访问顶点、法线、变换矩阵、材质属性等等——除了纹理文件名之外的所有内容。
我希望纹理的文件名存储在 SCNMaterialProperty 类的实例中。从文档中:
SCNMaterialProperty 类封装了一个纹理和一组属性,这些属性指定了如何将纹理应用到对象上。
但我只能得到一个代表纹理的 NSImage,而不是源文件名本身。
它必须在某处 - 在 XCode 的 collada 查看器的检查器中,文件名也会显示(以及来自 SCNMaterialProperty 的属性):
如何在 SceneKit 对象图中访问纹理的文件名?
three.js - Three.JS- 在 Collada 中检测交叉点(Ray Casting)
我的原型系统中有一个功能可以在您单击 Collada 文件时检测交叉点。相交函数如下:
但是当我使用:
intersects 矩阵为空,无法检测到交叉点!!!
但是当我使用:
我可以得到 intersects 矩阵,它工作得很好,但是发现了另一个问题(看这里:Three.JS -- conflict Camera controls with a textbox in a scene)
上面的函数中有代码吗?为了您的信息,我使用了一个简单的相机:
谢谢。
opengl - OpenGL 建模
我正在尝试创建允许我从 Collada 格式转换为我自己的自定义格式的程序(这部分很容易并且可以控制)。我想做的是以下。
1.) 给定从 Collada 文件解析的确切数据,找到一种方法来绘制模型。a.) 一个简单的立方体将生成 8 个顶点、36 个法线和 12 个纹理坐标,这是查找但我能找到的 OpenGL 绘制它的唯一方法需要我复制顶点和法线的数据以匹配法线的数量.
2.) 找到实现多重纹理的方法。a.) 我已经找到了大量关于此的教程,但似乎我找不到实际使用它的方法。这些功能似乎没有内置到我的 openGL 版本中(我已经在 2 台计算机上尝试过),并且没有人记录我可能丢失的任何必需的 dll。
three.js - 是否可以导入与像素对齐的 Collada 模型?
假设我有一个简单的立方体模型。(它比立方体更复杂,但为了讨论的目的,我们将简化。)
所以当我在 Sketchup 中时,立方体是 Xmm × Xmm × Xmm,其中 X 是一个整数。然后我导出一个 Collada 文件,然后将其加载到 threejs 中。
现在,如果我查看几何边界框,这些值是浮点数,而不是整数。
所以现在假设我将立方体彼此相邻放置,并且在 1 像素之间留出一小块空间。因为屏幕不能画半个像素,所以有时看到一个像素,有时看到两个,导致不均匀。
如果我能以某种方式让导入的模型具有整数维度,我想我可以令人满意地解决这个问题。从 Sketchup 开始,我可以完全访问模型的所有部分,因此过程中的任何一点都是公平的。
是否可以?
谢谢。
澄清:我的应用程序将有两个视图。与此相关的视图是使用直视碎片的 OrthographicCamera,因此这实际上是 2D 视图。出于这个问题的目的,在导入模型后,它应该看起来像一个正方形网格,中间有均匀的间距。
更新:除非您能提供实际答案,否则请不要回复。如果我需要帮助找到完成某事的方法,我会发布一个新问题。对于这个问题,我只想知道是否可以将导入的 Collada 模型与全像素对齐,如果可以的话如何。在这一点上,这主要是为了满足我的好奇心并增加我对什么是可能的和不可能的知识。感谢社区的帮助。
three.js - 在 ThreeJS 中挑选 collada 加载模型的问题
在 ThreeJS 中加载 collada 模型时,我遇到了挑选问题。立方体的挑选示例工作正常。加载 collada 模型也可以。
然而,似乎为了挑选 collada 对象,我需要在 3D 对象上方进行挑选。由于拾取适用于立方体,我无法弄清楚为什么它不适用于 collada 对象(从 SketchUp 导出)。有没有人有一个很好的例子,可以加载一个collada模型并选择单个对象?提前致谢。