问题标签 [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.
three.js - Three.js PlaneBufferGeometry 不渲染
我无法渲染 planeBufferGeometry。不知道我做错了什么。这是我第一次尝试使用 BufferGeometry。如果我用 Geometry.Sphere 或任何其他 Geometry 对象替换代码,这很好用。
摄像头位置
const WIDTH = window.innerWidth; 常量高度 = window.innerHeight;
谢谢
three.js - 对缓冲区几何进行射线投射时如何获得相交面
我正在对一个场景进行光线投射。
相交对象的几何形状是“BufferGeometry”。相交对象的一部分是
我需要得到那个物体的脸。我正在为此做这个。
但是很多时候,INTERSECTED face 包含一个在 face 中不存在的索引。例如,在上述情况下,INTERSECTED.faceIndex 为 732,但我获得的面仅包含 200 个面的数组。
我怎样才能得到相交的脸。
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 中的点来渲染点云。我知道这会通知我想要的上一部分的输出。
它可能看起来像:
我知道到目前为止这一切都很松散,但我只是在黑暗中四处乱窜,把这一切写下来帮助我思考清楚。
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,所以我肯定缺乏这方面的知识)。
three.js - THREE.js - BufferGeometry (ObjLoader) 的顶点坐标
我是 Three.js 的新手,在获取 2 个顶点的坐标时遇到了问题。我需要他们的 x,y,z 坐标来计算和绘制尺寸。
我使用了 ObjLoader,我确切地知道顶点的 ID(索引) - 11889 和 11877。
我尝试使用 BufferGeometry 的一些属性,但显然是错误的。所以这是我要使用的简单代码。
我读了一些类似的问题,但我无法针对我的问题调整答案。我应该怎么做才能获得坐标?谢谢!
javascript - JavaScript/three.js:THREE.BufferGeometry 不接收任何光线或阴影
我正在尝试使用噪声函数生成地形,但在让 BufferGeometry 网格接收来自 PointLight 的任何光线时遇到问题。设置 AmbientLight 时,我可以看到 BufferGeometry 但只有 PointLight 不起作用。它旁边的 CubeGeometry 适用于两种类型的光。我还希望地形接收阴影。我需要在网格上运行一些额外的方法吗?我在这里想念什么?
javascript - 在 Three.js 中使用 FBXLoader 将 BufferGeometry 转换为 Geometry
这是我加载 .fbx 对象的代码,它默认加载一个对象BufferGeometry
:
我想用它var geometry = new THREE.Geometry().fromBufferGeometry( bufferGeometry );
来解决这个问题,但我似乎没有mesh
在我的加载器函数中构建一个,所以我看不到如何实现这段代码。
我想以一种可读的方式访问对象的顶点,这就是为什么我不希望它加载为BufferGeometry
.
three.js - 如何获取 TubeBufferGeometry 路径中的点索引?(三.js)
我创建了 TubeBufferGeometry。代码如下:
为了获得感兴趣的点,我使用了 Raycaster.intersectObject(),我可以得到以下结果。
distance - 射线原点与交点之间的距离
point – 交点,在世界坐标中
面——相交的面
faceIndex – 相交面的索引
object – 相交的对象
uv - 交点处的 U,V 坐标
现在我可以在移动鼠标时获得 TubeBufferGeometry 中的相交点位置。
如何在pointArray中找到离相交点最近的点?</p>
我应该将相交点的坐标转换为世界矢量吗?
非常感谢。
three.js - Three.js - 将带有 TextGeometry 的场景导出到 OBJ/GLTF 然后由 OBJ/GLTF Loader 加载
我在 Three.js 中的导入/导出场景有问题 我的对象很少(使用 OBJLoader 加载的模型,使用 TextGeometry 生成的文本)。我能够使用 OBjExporter/GLTFExporter 将其导出到字符串定义,但是当我尝试再次加载它时,它将文本加载到 BufferGeometry 而不是 TextGeometry。是否可以加载具有适当几何形状的所有场景网格?或者也许它可以解析几何?我知道我可以保存没有文本的场景(以不同的定义存储文本参数然后再次生成它),但我想避免它。我期待着您的帮助。谢谢。
代码示例:
1. 将场景导出到 OBJ 的功能
- 从 OBJ 字符串导入的函数