如何将“BufferGeometryUtils.js”用于three.js?

C. *_*oux 1 three.js

虽然我不是 javascript 专家,但我已经使用了 Three.js 几个月了(我的主文件夹中有“three.js”脚本),我想使用 BufferGeometryUtils 中的一个函数。我尝试使用相同的技术,但没有奏效,并且出现此错误:“未捕获的 ReferenceError:BufferGeometry 未在 Object.mergeBufferGeometries (BufferGeometryUtils.js:202) 中定义”(我的three.js 版本只有几周老的)。我看到另一篇关于这个问题的帖子,但它对我不起作用,因为它是 Three.js 的旧版本。那么我该如何在我的脚本中使用这些函数呢?

Mug*_*n87 6

THREE.BufferGeometryUtils 不是核心的一部分,但您可以轻松导入实用程序,如下所示:

 import { BufferGeometryUtils } from 'three/examples/jsm/utils/BufferGeometryUtils.js';
Run Code Online (Sandbox Code Playgroud)

如您所见,该类是JSM库的一部分,这意味着它可以作为模块使用。

three.js R104

  • 请注意,最近已将其更改为“import * as BufferGeometryUtils from './”([参见此处](https://github.com/mrdoob/ Three.js/wiki/Migration-Guide#131--132)) jsm/utils/BufferGeometryUtils.js';` (2认同)

2ph*_*pha 5

似乎工作正常。
这一定是您包含文件的方式,或者可能是您正在转译的方式?
你的问题确实没有足够的细节。

var geometry1 = new THREE.CircleBufferGeometry( 5, 32 );
var geometry2 = new THREE.CircleBufferGeometry( 5, 32 );
var merged = THREE.BufferGeometryUtils.mergeBufferGeometries([geometry1, geometry2]);
console.log(merged);
Run Code Online (Sandbox Code Playgroud)
<script src="https://rawgithub.com/mrdoob/three.js/r104/build/three.js"></script>
<script src="https://rawgithub.com/mrdoob/three.js/r104/examples/js/utils/BufferGeometryUtils.js"></script>
Run Code Online (Sandbox Code Playgroud)