无法将从 Blender 导出的对象加载到 three.js 中?
Posted
技术标签:
【中文标题】无法将从 Blender 导出的对象加载到 three.js 中?【英文标题】:Inability to load objects exported from Blender into three.js? 【发布时间】:2018-05-01 21:28:08 【问题描述】:我玩 Blender 的时间比我编写代码的时间长,当我了解到您可以使用 three.js 在浏览器中加载和操作混合时,我感到非常兴奋。我查找了一个教程,导出了一个简单的 icosphere,然后插入了我的 .json 文件。唉,在查看了许多不同的页面和示例之后,尽管无法在我的代码中找到任何可见的错误,但我似乎仍然无法让它出现在浏览器中。我用它制作了一个 codepen 项目(这是我能找到在线获取 json 文件的唯一方法)。
https://codepen.io/redheadedmandy/project/editor/ZjNEQG#0
这是调用.json文件的sn-p代码:
function initMesh()
function addModelToScene(geometry, materials)
var material = new THREE.MeshFaceMaterial(materials);
model = new THREE.Mesh(geometry, material);
model.scale.set(1, 1, 1);
model.position.set(50, 0, 0);
scene.add(model);
var loader = new THREE.JSONLoader();
loader.load("casvusnion.json", addModelToScene);
如果有人能发现问题,或者对问题可能有什么建议,我将非常感谢您的帮助!
【问题讨论】:
所以,这次是 r75。比 r71 好多了 :) 虽然最新版本是 r88。 最好先尝试将模型导入threejs editor,以确保正确导出。在这种情况下它可以工作,但请注意它偏离了中心。 有帮助吗? ... 我不敢相信我还没有使用最新版本。叹。由于您提醒使用控制台日志,我还意识到,它失败的原因是由于本地文件的跨域请求问题......我将不得不找到一个解决方法,但分心了另一个项目! @AmandaHarvey 不客气) 【参考方案1】:试试这个:
function initMesh()
var loader = new THREE.JSONLoader();
loader.load("casvusnion.json", addModelToScene);
function addModelToScene(geometry, materials)
var material = new THREE.MeshFaceMaterial(materials);
model = new THREE.Mesh(geometry, material);
model.scale.set(1, 1, 1);
model.position.set(50, 0, 0);
scene.add(model);
并检查浏览器的控制台日志以获取警告和错误消息。
还有,你的相机
camera = new THREE.PerspectiveCamera(70, WIDTH / HEIGHT, 1, 10);
camera.position.set(0, 3.5, 5);
camera.lookAt(scene.position);
和你的模型
model.position.set(50, 0, 0);
看起来模型的位置离相机的视野很远。
最后,您的项目是只读的,因此其他人不可能在其中更改某些内容。
【讨论】:
以上是关于无法将从 Blender 导出的对象加载到 three.js 中?的主要内容,如果未能解决你的问题,请参考以下文章