问题标签 [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.BufferGeometry 中使用 Float64Array 而不是 Float32Array
我在使用 BufferGeometry 时遇到了一些问题,因为它使用 Float32Array 来指定位置。我需要绘制的值(使用 THREE.Points )是大数字,例如“2732124.760877”,并且在使用 Float32Array 时我失去了大部分精度,而当我尝试使用 Float64Array 时,绘图变得混乱起来。有没有办法我可以使用 Float64Array 而不是 Float32Array。
如果您想查看从 Float32Array 更改为 Float64Array 时会发生什么,请尝试在以下 jsfiddle 中将 Float32Array 更改为 Float64Array(第 43 行)
three.js - THREE.js - BufferGeometry 与合并几何之间的区别?
我知道 BufferGeometry 的计算效率更高。我也知道合并几何是有效的,因为它会进行 1 次渲染调用。此外,我相信合并几何更容易创建/实现(对于像我这样的新手)。
还有哪些主要和次要差异?
three.js - 在 Three.js 中拉伸缓冲区几何?
new THREE.SphereGeometry()
我最近回顾了一个场景,用缓冲几何体替换了所有的创作
:(new THREE.SphereBufferGeometry()
圆柱体、圆形、盒子等)我所有的几何体。
遇到障碍new THREE.ExtrudeBufferGeometry()
有缓冲版本THREE.ExtrudeGeometry
吗?我如何创建它?
javascript - 使用 Three.js (r78),如何沿路径在两个值之间转换线材质颜色?
我以为我理解了这个例子,但是我尝试将它应用到我的代码中会产生实心黑线。有人可以帮我理解为什么这可能不起作用吗?
javascript - Threejs:使自定义着色器匹配标准渲染
出于性能原因,我需要在一个场景中显示数百个移动的四面体。我在那里使用了需要自定义着色器的 instancedbuffergeometry。
该场景还包含具有规则几何体(非缓冲区)和一些灯光的对象(我准备了精简片段:https ://jsfiddle.net/negan/xs3k1yz4/ ://jsfiddle.net/negan/xs3k1yz4/ )。
我的问题是四面体没有被遮蔽,因此它们的照明似乎适合场景的其余部分。原因可能是我构建的原始着色器:
有没有办法让自定义着色器适合我在场景中定义的灯光?着色器还以不会产生定向光印象的方式渲染面。我宁愿让单个面均匀照明,而不是从顶点插入颜色,但我无法实现这一点。
任何指针或帮助表示赞赏。
javascript - 绘制 Three.js BufferGeometry 线时,颜色不会粘在线段上
绘制 BufferGeometry 线时,我将索引设置为:
indices = [1,2,2,3,3,4]
,颜色设置为:colors = [r1,g1,b1,r1,g1,b1, r2,g2,b2,r2,g2,b2, r3,g3,b3,r3,g3]
。然而,颜色不会粘在片段上并超越它们,最终与下一种颜色混合。我注意到的一点是它不会绘制所有颜色,只绘制第一种颜色,就像它为每种颜色着色段半一样。我创建了一个小提琴:http: //jsfiddle.net/0f1oxdjx/
编辑了小提琴。
three.js - 使用 bufferGeometry 获取 THREE.js Points 对象中顶点的屏幕坐标
我想让一个 DOM 节点在我的 THREE.js 模拟中跟踪一个粒子。我的模拟是用 Points 对象构建的,使用 bufferGeometry。我在渲染循环中设置每个顶点的位置。在模拟过程中,我正在移动/旋转相机和 Points 对象(通过其父 Object3d)。
我不知道如何为我的任何粒子获取可靠的屏幕坐标。我已经按照其他问题的说明进行操作,例如Three.JS: Get position of rotate object和Converting World coordinates to Screen coordinates in Three.js using Projection,但它们似乎都不适合我。在这一点上,我可以看到顶点的计算投影随着我的相机移动和对象旋转而变化,但不是以我可以实际映射到屏幕的方式。此外,有时屏幕上相邻的两个粒子会产生截然不同的投影位置。
这是我最近的尝试:
本质上,我已经在我的着色器中复制了操作来派生gl_Position
.
projectedPosition
是我想存储屏幕坐标的地方。
如果我错过了一些明显的东西,我很抱歉......我已经尝试了很多东西,但到目前为止没有任何效果:/
提前感谢您的帮助。
javascript - 如何使用 Three.js 创建网格
我有一个 .obj 文件
我需要创建 THREE.Mesh。我愿意
我想我需要在数组中有以下数据:
我不明白我需要在索引数组中存储什么?
three.js - 加载 PLY 文件时,从 Geometry 转换为 BufferGeometry 的三个 JS 不起作用
我正在从 PLY 文件(超过 60Mb)加载一个非常复杂的 3D 模型。在我的项目中,我需要使用轨道控制来围绕物体移动。显然,由于文件很大,某些计算机的操作速度非常慢。为了加快速度,我尝试使用以下代码行将我的几何图形转换为缓冲区几何图形:
但我收到以下错误:
TypeError:无法在 index.js 处的 Threed-viewer.component.ts:379 处的 BufferGeometry.fromGeometry (three.module.js:14307)处的 DirectGeometry.fromGeometry (three.module.js:12219)处读取未定义的属性“0” :52 在 XMLHttpRequest。(three.module.js:29263) 在 ZoneDelegate.webpackJsonp.818.ZoneDelegate.invokeTask (zone.js:367) 在 Object.onInvokeTask (ng_zone.js:264) 在 ZoneDelegate.webpackJsonp.818.ZoneDelegate.invokeTask (zone. js:366) 在 Zone.webpackJsonp.818.Zone.runTask (zone.js:166) 在 XMLHttpRequest.ZoneTask.invoke (zone.js:420)
任何想法?
谢谢,
迪诺