问题标签 [buffer-geometry]

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

three.js - Three.js PlaneBufferGeometry 不渲染

我无法渲染 planeBufferGeometry。不知道我做错了什么。这是我第一次尝试使用 BufferGeometry。如果我用 Geometry.Sphere 或任何其他 Geometry 对象替换代码,这很好用。

摄像头位置

const WIDTH = window.innerWidth; 常量高度 = window.innerHeight;

谢谢

0 投票
2 回答
1206 浏览

three.js - 对缓冲区几何进行射线投射时如何获得相交面

我正在对一个场景进行光线投射。

相交对象的几何形状是“BufferGeometry”。相交对象的一部分是

我需要得到那个物体的脸。我正在为此做这个。

但是很多时候,INTERSECTED face 包含一个在 face 中不存在的索引。例如,在上述情况下,INTERSECTED.faceIndex 为 732,但我获得的面仅包含 200 个面的数组。

我怎样才能得到相交的脸。

0 投票
1 回答
374 浏览

javascript - 用javascript解析二进制点数据

问题

我从描述 3D 空间中一组彩色点的 API 接收二进制数据。目的是解析这些点并在 Three.js 的缓冲几何中使用它们。

在处理二进制格式的数据时,我有点不知所措,所以我需要你的帮助。


关于来自 API 的二进制数据:

二进制数据以以下格式的标头开头:

标题后面是一个空行,然后是这种格式的这些点:

每 32 个字节:

  • X:双(8字节)
  • Y:双(8字节)
  • Z:双(8字节)
  • R:无符号字符(1 字节)
  • G:无符号字符(1 字节)
  • B:无符号字符(1 字节)
  • 5个垃圾字节来填充剩余空间

到目前为止我在哪里:

假设binaryPoints变量保存来自 API 的原始二进制数据。据我所知,我必须首先将数据添加到一个字节大小为 32(每个点的大小)的 arrayBuffer 中。接下来,我将该缓冲区添加到 DataView 对象以对其进行操作。

所以我还没有很多。我想我需要通过实现偏移来计算标题占用的空间,我想从标题中获取点数。

从我看到的一些示例和其他 SO 问题中,我相信我应该一次循环通过缓冲区 32 个字节,同时读出 xyzrgb 值。它可能看起来像:

...但说实话,一旦我到了这一点,我就无法弄清楚如何处理这些信息。在我发现的一些示例中,循环通过只有一种信息类型的二进制数据运行(在我的情况下,就好像我只有 X 值)。

我是否应该创建一个新的纯 javascript 点数组并添加如下值:

情况可能并非如此,因为我计划在下一步中将 Typed Arrays 直接转录到 Three.js bufferGeometries 中,并且保留一个 [large] 额外的普通 JS 数组会增加开销。


下一步:将点放入 Three.js bufferGeometry

我将使用 Three.js 的 bufferGeometry 中的点来渲染点云。我知道这会通知我想要的上一部分的输出。

它可能看起来像:


我知道到目前为止这一切都很松散,但我只是在黑暗中四处乱窜,把这一切写下来帮助我思考清楚。

0 投票
1 回答
1706 浏览

javascript - THREE.OBJLoader - 缩放网格和 BufferGeometry 顶点

我正在使用THREE.OBJLoader将 3D 模型加载到我的场景中。它工作正常。

但是,将其添加到场景后,我需要将其缩放 10,然后检索其顶点位置。

我知道这THREE.OBJLoader给了我一个BufferGeometry,并且我知道如何使用position属性访问它的顶点。

我的问题是:Float32Array无论是在将网格添加到场景之前还是之后,在缩放网格后存储这些顶点似乎都没有更新。

在从加载程序中获取网格后,我使用此代码段来缩放网格:

然后我使用以下方法获取顶点:

这样做,我的网格被添加到具有适当(缩放)尺寸的场景中,但它BufferGeometry不想更新顶点值。

我做了很多涉及myMesh.geometry.attributes.position.needsUpdate = true;or的测试myMesh.updateMatrix();,我已经看到了很多关于这个主题的 SO 问题(这里这里),但我找不到解决方案......

如果我在这里误解了什么,你能告诉我吗?(请记住,我刚开始使用 Three.js 和 WebGL,所以我肯定缺乏这方面的知识)。

0 投票
1 回答
719 浏览

three.js - THREE.js - BufferGeometry (ObjLoader) 的顶点坐标

我是 Three.js 的新手,在获取 2 个顶点的坐标时遇到了问题。我需要他们的 x,y,z 坐标来计算和绘制尺寸。

我使用了 ObjLoader,我确切地知道顶点的 ID(索引) - 11889 和 11877。

我尝试使用 BufferGeometry 的一些属性,但显然是错误的。所以这是我要使用的简单代码。

我读了一些类似的问题,但我无法针对我的问题调整答案。我应该怎么做才能获得坐标?谢谢!

0 投票
1 回答
1267 浏览

javascript - JavaScript/three.js:THREE.BufferGeometry 不接收任何光线或阴影

我正在尝试使用噪声函数生成地形,但在让 BufferGeometry 网格接收来自 PointLight 的任何光线时遇到问题。设置 AmbientLight 时,我可以看到 BufferGeometry 但只有 PointLight 不起作用。它旁边的 CubeGeometry 适用于两种类型的光。我还希望地形接收阴影。我需要在网格上运行一些额外的方法吗?我在这里想念什么?

https://jsfiddle.net/cbo8fx1s/

0 投票
1 回答
1706 浏览

javascript - 在 Three.js 中使用 FBXLoader 将 BufferGeometry 转换为 Geometry

这是我加载 .fbx 对象的代码,它默认加载一个对象BufferGeometry

我想用它var geometry = new THREE.Geometry().fromBufferGeometry( bufferGeometry );来解决这个问题,但我似乎没有mesh在我的加载器函数中构建一个,所以我看不到如何实现这段代码。

我想以一种可读的方式访问对象的顶点,这就是为什么我不希望它加载为BufferGeometry.

0 投票
0 回答
81 浏览

three.js - 如何统一(相同大小的复选框)自定义方格纹理图像,应用于三个 Js 中加载的模型的所有对象?

我在三个 js 中加载了一个模型(obj 文件),并在所有对象上应用了自定义检查器纹理图像。纹理应用于模型。但是,问题是 - 检查器并不统一 - 有些检查器看起来很小,有些看起来更大。

这是屏幕截图的链接

有什么办法可以解决吗?我的意思是 - 在三个 js 中对几何图形或纹理的任何内置属性等进行任何计算。

这是模型文件 Model.obj的链接

在三个 js 中加载此模型并应用纹理图像

// 下面是我尝试过的一些代码。

0 投票
0 回答
392 浏览

three.js - 如何获取 TubeBufferGeometry 路径中的点索引?(三.js)

我创建了 TubeBufferGeometry。代码如下:

为了获得感兴趣的点,我使用了 Raycaster.intersectObject(),我可以得到以下结果。

distance - 射线原点与交点之间的距离

point – 交点,在世界坐标中

面——相交的面

faceIndex – 相交面的索引

object – 相交的对象

uv - 交点处的 U,V 坐标

现在我可以在移动鼠标时获得 TubeBufferGeometry 中的相交点位置。

如何在pointArray中找到离相交点最近的点?</p>

我应该将相交点的坐标转换为世界矢量吗?

非常感谢。

0 投票
1 回答
317 浏览

three.js - Three.js - 将带有 TextGeometry 的场景导出到 OBJ/GLTF 然后由 OBJ/GLTF Loader 加载

我在 Three.js 中的导入/导出场景有问题 我的对象很少(使用 OBJLoader 加载的模型,使用 TextGeometry 生成的文本)。我能够使用 OBjExporter/GLTFExporter 将其导出到字符串定义,但是当我尝试再次加载它时,它将文本加载到 BufferGeometry 而不是 TextGeometry。是否可以加载具有适当几何形状的所有场景网格?或者也许它可以解析几何?我知道我可以保存没有文本的场景(以不同的定义存储文本参数然后再次生成它),但我想避免它。我期待着您的帮助。谢谢。

代码示例:
1. 将场景导出到 OBJ 的功能

  1. 从 OBJ 字符串导入的函数