- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用THREE.OBJLoader将 3D 模型加载到我的场景中。效果很好。
但是,将其添加到场景后,我需要将其缩放 10,然后检索其顶点位置。
我知道 THREE.OBJLoader
为我提供了 BufferGeometry
,并且我知道如何使用 position
属性访问其顶点。
我的问题是:存储这些顶点的 Float32Array
在缩放网格后似乎没有更新,无论我在将其添加到场景之前还是之后执行此操作。
在从加载器获取网格后,我使用此代码片段来缩放网格:
myMesh = new THREE.Mesh(loadedMesh.geometry, new THREE.MeshBasicMaterial({color: 0xff0000}));
myMesh.scale.set(10, 10, 10);
然后我使用以下方法获取顶点:
var myMeshVertices = myMesh.geometry.attributes.position.array;
这样做时,我的网格体已添加到具有正确(缩放)尺寸的场景中,但其 BufferGeometry
不想更新顶点值。
我做了很多涉及 myMesh.geometry.attributes.position.needsUpdate = true;
或 myMesh.updateMatrix();
的测试,并且我看到了关于这个主题有很多问题( here 或 here ),但我找不到解决方案......
如果我误解了什么,你能告诉我吗? (请记住,我刚刚开始使用 Three.js 和 WebGL,所以我肯定缺乏这方面的知识)。
最佳答案
以下应该可以解决问题:
myMesh.geometry.scale( 10, 10, 10 );
缩放Object3D
及其子类的实例意味着您将缩放应用于其内部matrix
及其worldMatrix
。该矩阵稍后在顶点着色器中使用,以变换顶点。如果您需要 CPU 端已有的转换,请使用 BufferGeometry 的相应转换方法。
关于javascript - THREE.OBJLoader - 缩放网格和 BufferGeometry 顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51011614/
我正在尝试将 OBJ 3D 模型显示为线框,可以使用 Three.js 通过 OrbitControls 移动该线框。我是 Three.js 的新手,所以如果我遗漏了一些“明显”的东西,我深表歉意。
我正在使用 OBJLoader.js。我有一个按钮,点击后会从场景中删除一个 3d 模型并添加一个新模型,但是每次加载模型时,chrome 中的内存使用量都会增加大约 50 MB,并且没有减少。我试过
我正在尝试使对象转换并接收阴影, 场景中有一个光源THREE.SpotLight 这是我的 MTLLoader() 和 OBJLoader() 代码 var mtlLoader = n
我目前正在使用 three.js 开发我的小项目,但我很难在 THREE.OBJLoader 加载的对象上映射纹理。 three.js内置geometry就没有这个问题。我现在真的很困惑......
我对 Three JS 和 Tween JS 真的很陌生。我为我的项目选择了它,最近感到沮丧。我在尝试补间 object1 时遇到了麻烦。场景中还有其他物体。 object2、obeject3 等。我
我有这个对象,我正在用 THREE.objLoader 加载,然后用它创建一个网格,如下所示: mesh = new THREE.SceneUtils.createMultiMaterialObjec
我已经使用 Three.js 几个星期了,我设法将纹理应用于直接通过代码创建的立方体,但是一旦我尝试使用 OBJLoader 加载 OBJ 文件,我注意到我无法使用相同的方法通过 TextureLoa
我正在尝试制作一个 HTML/Javascript 应用程序,以 Wavefront .OBJ 格式显示任意 3d 模型。现在我有一个可以显示球体和平面等的工作应用程序。我尝试将 THREE.OBJL
这似乎是一个非常微不足道的问题,但我找不到解决方案。我使用 OBJLoader 向场景添加了一个对象,如下所示。我怎样才能将它从场景中移除?我试过使用代码清除 scene.children,但这并没有
我一直使用 .obj 文件将模型加载到 Three.js 中。我在某处读到,首选方法是现在使用 .gltf。 当我开始这样做时,我意识到虽然使用 gltf 加载对象看起来确实很简单,但一旦对象位于内部
我正在尝试使用 OBJLoader 导入 obj,但它未正确导入 目标是这样的 -对象img 它正在导入这个 -三个js中的Obj 发生的情况是整个 obj 导入得不好。 我能做什么呢? 我正在做
我正在使用THREE.OBJLoader将 3D 模型加载到我的场景中。效果很好。 但是,将其添加到场景后,我需要将其缩放 10,然后检索其顶点位置。 我知道 THREE.OBJLoader 为我提供
在使用 OBJLoader 加载模型后,我试图获取模型几何的边界框时遇到了问题。到目前为止,我有: var loader = new THREE.OBJLoader(); loader.load( m
如何让 OBJLoader 简单地返回对象而不是将它添加到场景中?我遇到了一个同步问题,我的代码没有等待 XHR 请求完成,就抛出了错误。 下面的例子说明了问题: var loader = new T
我正在从事一个项目,我希望允许从 OBJLoader.js 加载的 .OBJ 模型从聚光灯转换阴影。光线会从其他普通物体转换阴影,但 .OBJ 似乎不会转换阴影。 问题的可能症状如下:当单击地板时创建
我想将我的基本脚本(运行良好)移至 AngularJs这是我的 Controller 和基本的 html。当我执行此操作时,它不会显示任何错误,只是得到空白页面。在内部,元素获得了信息,但我看不到任何
有没有办法从 intersectObjects 函数返回的数组中访问加载期间定义的对象模型的名称?由于某种原因,以下代码记录未定义。 var objLoader = new THREE.OBJLoad
我正在尝试使用 LibGDX 将 .obj 文件加载到 Android 项目中。这些文件没有 纹理文件,但包含 .mtl 文件中的 Material 。我使用的是最新的官方 nightly,渲染对象文
我正在尝试加载一个对象 (.obj) 文件以与 three.js 一起使用并使用react(使用 react-three-renderer),但得到一个我的代码如下所示: import React f
我使用 OBJLoader 加载模型,这里是加载 obj 文件的代码: var loader = new THREE.OBJLoader(); loader.load(
我是一名优秀的程序员,十分优秀!