问题标签 [scenejs]

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.

0 投票
1 回答
435 浏览

javascript - 使用 SceneJS 重用 JSON 对象节点

我使用 scenejs 框架创建了一个 webgl 动画。由于它将包含许多相同的元素,我想尽量减少使用的代码量并尽可能地重用这些元素。

首先,我将 diskJSON 定义如下:

当我使用 sceneJS 运行以下代码时,它工作正常。

但是,当我尝试重用之前定义的相同 diskJSON 时,它只会创建一个节点,而不是 4 个:

该应用程序将有数千个这样的节点,因此每次都必须重新定义它似乎是一种浪费。这是 scenejs 的问题,还是在 Javascript/JSON 功能方面按预期工作?

0 投票
1 回答
1327 浏览

javascript - WebGL 动画闪烁,对象太大?

我使用 scenejs 库创建了一个webgl 动画(通过单击左下角的按钮启动它,注意它也播放音乐,您目前无法禁用)。

我遇到的问题是中间的地板/平面开始闪烁并在整个动画中继续闪烁/闪烁。只有到最后,闪烁才会降低,到最后完全停止(当飞机即将结束时)。

如果我将飞机的尺寸减小到其尺寸的 10%(从 ~26000 到 ~2600),它根本不会闪烁。

我试过调整纹理比例,没有效果。降低fps似乎也没有效果。WebGL 在渲染大对象时有问题吗?有什么解决方法吗?

可能会使飞机静止,并让它的纹理移动,但它肯定会使更多的事情变得更加棘手,尤其是当向其中添加更多元素时。

设置requestAnimationFrame没有效果,也没有删除 Flash 视频。唯一正常工作的时候是当飞机明显更小,或者当它到达它的尽头时。

0 投票
1 回答
5154 浏览

json - 将 3D 模型转换为 SceneJS JSON,包括纹理

动机
我正在尝试使用 WebGL 创建一个小型演示应用程序。我选择使用 SceneJS,因为它似乎是一个简单的框架,并且足以满足此目的。

我已经下载了几个 .blend 模型(Amy Rose等)并使用 Blender 将它们导出为 Collada (.dae) 文件。然后我使用 scenejs-pycollada 将它们转换为 json 模型。

我只花了几个小时让scenejs-pycollada转换器工作。显然,如果您以前从未使用过 Python,那么让这些 Python 依赖项在 Windows 中工作并不是那么容易。;)

问题
但现在我被卡住了(再次)。我的问题是模型没有任何纹理或材料。

我使用了SceneJS 的Seymour Plane 示例。我转换的模型几乎看不到。它是黑色的,似乎对场景中的照明没有反应。如果我将飞机和模型一起加载,我可以看到模型已加载,因为它的手臂和腿伸出飞机。

现在我遵循了一些教程,这些教程可以让我将纹理导出为 PNG 图像。然后我修改了 JSON 模型中的纹理文件名以匹配文件名,但这没有帮助。

所以我希望有人能帮我找到一种方法,将 Blender 模型(或其他常见的 3D 模型)导出为 SceneJS 使用的 JSON 格式,包括纹理。

只要可行,任何其他在 SceneJS 中加载模型的方法都可以。

如果一个人有一个免费下载 body/figure JSON 模型的链接,那现在会有所帮助,但我宁愿学习它是如何工作的。:)

我正在使用

  • Windows 7 家庭高级版 64 位
  • Python 2.7 (Windows 32bit)
    我选择了 32 位版本,因为对库的支持似乎更好,并且可用的安装程序更多。起初我混合了 32 位和 64 位,这给我带来了麻烦,但现在一切似乎都正常(除了纹理)。
  • 搅拌机 2.59
  • 场景JS 0.8.0

我的工作流程
在 Blender 中,我将模型导出为 Collada (*.dae) 文件,然后使用 scenejs-pycollada 将它们转换为 Raw JSON。这给了我一个包含两个对象的 JSON 文件。第一个似乎是场景,第二个似乎是模型。我保留第二个并将其放入 SceneJS 示例代码中使用的 Javascript 变量中。, "type": "library", "parent": "Scene"该模型以我需要从代码中删除以使其完全加载的属性结束。

0 投票
2 回答
392 浏览

json - SceneJS 图形示例

是否有任何好的开源 SceneJS 示例可以绘制类似于http://www.graphycalc.com/中演示的功能?

0 投票
1 回答
292 浏览

opengl-es - 在 webgl 中缩放不变对象

WebGl 不支持线条粗细。所以当我需要突出显示某条线时,我只是在它周围画一个矩形。但是当我放大场景时,它看起来很可怕。

我现在看到的有两种方式:

1)根据canvas.width重新计算矩形宽度为模型坐标。

2)将所有缩放不变的对象放在单独的矩阵下(我使用scenejs)并在每个鼠标滚轮后重新计算它们的位置

我不喜欢这两种解决方案。所以我想知道:是否有很好的解决方法可以使项目缩放不变?

0 投票
0 回答
189 浏览

webgl - 如何在 Scenejs 中通过 IdMapping 进行拾取?

我们有一个像这样的巨大 Json Mesh,我们用 scenejs 渲染:

idMapColors 对于每个“对象”都是唯一的,可以转换为 id 以提供附加信息。

我们现在想在屏幕上使用普通颜色渲染网格,并在第二个渲染路径中使用 idMapColors。我们不想在特定点(鼠标位置)处读取第二个 FrameBuffer(用于 idMapColors)中的颜色值。

如何在 Scenejs 中执行此操作?我们可以将 idMapColors 渲染到 Framebuffer,但是如何访问它的数据呢?

https://github.com/xeolabs/scenejs/wiki/frameBuf的 wiki 上,我们发现拣货还在进一步工作中,目前是否有可能这样做?

0 投票
1 回答
2285 浏览

webgl - 将材质/纹理添加到现有的 THREE.Mesh (three.js)

我正在寻找能够根据一些用户输入提取图像(从数据库或任何地方)并将它们覆盖到 THREE.Mesh(three.js)上的能力。我认为我需要做的是以下几点:

1)从图像创建具有纹理的新材料并添加到几何体

2) 确定要覆盖图像的面

3)对于每个顶点,确定并分配图像的UV坐标

4)将每个面的materialIndex更改为新材料

我只是不确定这是否可行以及如何对现有网格进行正确分配。任何帮助将不胜感激。

更新

任何人都知道使用另一个库(例如 SceneJS)是否可能/更容易?

0 投票
1 回答
10161 浏览

webgl - 收集 webGL 应用程序帧率直方图数据

我正在考虑坚持一个特定的框架来为我的学术课程工作,但只基于我应该证明的结果。我想为所有三个框架绘制图表,其中顶点数为一个轴,FPS(阈值为 60)在另一个轴上。这是否足以采用 obj、collada、json 等格式的单个预定义模型并将其加载到三个框架中?然后将帧速率和顶点数记录到某个外部文件中,然后使用数据绘制图表,根据性能参数报告三个框架中的最佳框架。但我正在为所有这些框架寻找一些样板代码来加载不同的模型(可用于我图中的顶点维数)并将每秒的帧速率记录到外部文件。这是我一直在思考的方法。但不能 在互联网上找不到太多帮助。我希望有人能帮助我吗?

0 投票
1 回答
1049 浏览

json - 在哪里可以找到在 scenejs 中加载 json 模型的任何示例?

我有一个使用 Blender 导出的带有顶点、uvs、索引等的 JSON 模型。它适用于其他框架。我也想尝试使用 ScenejS。但是找不到使用 SceneJS 实现 JSON 模型的体面示例。如果有人将我重定向到我可以使用 JSON 模型在 SceneJS 上学习和工作的地方,那将会很有帮助。我真的很想知道,有没有在 SceneJS 中使用 JSON 模型的演示?

0 投票
1 回答
286 浏览

3d - 如何使用 SceneJS 在场景中分布随机立方体?

我想使用 SceneJS 在画布场景上随机分布立方体。由于这个库有很大的学习曲线,我自己检查了几个例子并开始编码。我做了一些代码,无法说服自己错误在哪里:

我请求有人指出我的错误在哪里,我会非常感谢你。我只能在浏览器中看到空白屏幕:(