问题标签 [objloader]

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 回答
397 浏览

object - 三 JS - 如何实现自动 3d 模型比例

我已经用 three.js 实现了一个简单的 3D 模型查看器。该项目包含一个 3D 模型数据库,分为不同的类别。一类是机型高(宽度相对较小,高度远高于其他机型的高度),另一类机型是小(相对于所有产品,高度和宽度都小于其他机型)在其他类别中,这些是小型模型),在另一个类别中,模型很大(它们的高度和比其他类别的许多模型更宽。

查看器具有固定的画布宽度和高度。为此,在画布中加载模型时,很多模型会立即以小比例加载,这需要后续多次缩放。还有一些模型,其上部不适合画布,而下部则在启动时。这也需要后续的缩放。

查看器首先需要估计模型的尺寸,然后它会自动为模型单独选择比例,然后将模型垂直和水平居中

模型所在的平面(模型有可触摸的宽度和高度,厚度很小,所有这些模型都接近平面)与屏幕平面重合也是必要的。在启动时,许多模型对这些平面都有偏移。如何实现这一点,以便查看器自动展开模型?

下面我附上来自不同类别的模型的屏幕截图 - 它们被清楚地记录在哪里: 高个模型,上半部分不适合画布 小宽高模型 短款,宽度远小于画布宽度 平面偏离屏幕平面的模型

下面是负责初始化场景的查看器代码:

0 投票
0 回答
50 浏览

c++ - 包含在多个文件中时的 OBJ_Loader.h 链接错误

我正在使用OBJ-Loader加载.obj。对于我的项目,我需要在多个文件中包含OBJ_Loader.h 。它给了我 Visual Studio 上的LNK2005链接错误。它说类似“目标文件已定义”。但是,如果我将它包含在一个文件中两次,它就可以了。

0 投票
1 回答
72 浏览

python - 我是 Python 新手。我面临以下错误: NameError: name 'ObjFile' is not defined

0 投票
2 回答
355 浏览

javascript - WebGL INVALID OPERATION 缓冲区大小不足

我正在尝试用 WebGL 和 javascript 编写一个简单的程序来从 .obj 文件中绘制一个简单的对象。我正在使用 npm 的 webgl-obj-loader 来加载对象。正如标题所说,我不断收到缓冲区大小不足(边缘)和索引缓冲区太小(FF)。我使用了 gl.geterror 函数,我得到 1282 错误代码,这意味着 INVALID_OPERATION。

这是我用来加载 obj 文件的方式。

第二步:初始化缓冲区。

在这里,我正在尝试绘制一个简单的立方体。

数组大小为:顶点:72 索引:36 texCoords:48 法线:72

考虑到顶点是 x,y,z 点的三元组,顶点缓冲区包含 24 个点(vertex[0]=x, vertex[1]=y, vertex[2]=z, ...),并且索引数组没有包含高于 23 的数字,所以我不明白错误发生在哪里。还有什么方法可以调试缓冲区吗?我尝试了 spector.js,但没有太大帮助,因为绘图调用由于错误而无济于事。

0 投票
0 回答
194 浏览

async-await - 如何使用 .loadAsync 方法在 three.js 中加载多个 OBJ 模型并添加到场景中?

我想使用three.js异步加载多个OBJ模型,然后将它们添加到一个场景中。此外,我想将加载的模型分配给常量,以便以后可以访问它们。

为此,我已经从各种来源汇总了以下代码:

但我无法将模型分配给场景。

实现我的意图的最佳方式是什么?
我是否必须从loadedData_1.children[0] 中选择网格并添加到我的场景中?

来源:
https ://threejs.org/docs/#api/en/loaders/Loader.loadAsync
https://discoverthreejs.com/book/first-steps/load-models/

0 投票
1 回答
84 浏览

three.js - 如何在 Three.js 中将自定义着色器材质添加到 obj 3D 对象

以下是用于 3D 对象的 ObjLoader 的工作示例。有没有人可以教我如何为这个 3D 对象添加着色器材质?

大多数教程就像使用标准的three.geometry,然后将几何体和着色器添加到场景中。但是,如果我想将自定义着色器材质添加到 3D 对象,而不是标准 Three.js 几何体,我应该怎么做?

0 投票
0 回答
32 浏览

google-chrome - Three.js:英特尔 Mac 上的巨大 Chrome 性能问题

我创建了一个基于 three.js 的 Web 应用程序来展示 3d 瓷砖。您可以通过以下链接找到展示:https ://www.karak.at/workbench/dd6228117c6faec166b208710b5a52d5

工作原理:使用 InstancedMesh 多次加载和克隆 OBJ 文件以创建瓷砖墙。接下来将一个点和一个聚光灯添加到场景中。灯的位置对当前鼠标位置作出反应。场景在 mousemove 上重新渲染。

在基于 M1 的 Mac 上的所有浏览器以及在基于 Intel 的 Mac 上除 Chrome 之外的所有浏览器上,渲染都非常流畅。在基于 Intel 的 Mac 上使用 Chrome 版本 98 时,计算机的工作量很大,风扇上升,帧率下降,在最坏的情况下应用程序崩溃。

这是我的渲染器设置:

这是用于在隔离环境中展示问题的 Pen:https ://codepen.io/Huangart/pen/VwrVjpj

我的应用程序的实施方面有什么问题吗?这是一个已知的问题?关于如何克服这个 Chrome 问题的任何想法?