javascript - 在 three.js 中加载的对象 - 位置错误
问题描述
我正在制作一个虚拟旅游编辑器,我需要在某些坐标上放置一些地图图钉。在开发后端逻辑时,我只使用球体作为“占位符”。现在,当一切正常时,我想用实际的 pin 对象替换球体。问题是,当我加载 pin 对象并为这些球体设置相同的坐标时,pin 位于不同的位置。
我试图将这些坐标放在根对象、网格对象上,结果总是相同的。还尝试将坐标记录到控制台中,这是正确的。
ADD_HOTSPOT_TO_SCENE: function(context, hotspot) {
// SPHERE CODE
let geometry = new THREE.SphereBufferGeometry( 1, 60, 40 );
let mat = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
let cube = new THREE.Mesh( geometry, mat );
// set position of hotspot
cube.position.set(hotspot.x, hotspot.y, hotspot.z);
// set unique object name to pair with hotspot object
cube.name = hotspot.getUniqueID();
cube.scale.x = hotspot.scale / 10;
cube.scale.y = hotspot.scale / 10;
cube.scale.z = hotspot.scale / 10;
// add object to scene as draggable object
context.commit('ADD_DRAGGABLE_OBJECT_TO_SCENE', cube);
// OBJECT CODE
let material = new THREE.MeshBasicMaterial({
map: new THREE.TextureLoader().load(Tour.mapPinTexture)
});
context.state.loader.load(Tour.mapPinObj, function(object){
object.position.set(hotspot.x, hotspot.y, hotspot.z);
object.name = hotspot.getUniqueID();
object.traverse( function ( node ) {
if ( node.isMesh ) {
node.material = material;
}
} );
var box = new THREE.BoxHelper( object, 0xffff00 );
context.commit('ADD_DRAGGABLE_OBJECT_TO_SCENE', object);
context.commit('ADD_TO_SCENE', box);
});
}
我需要将对象放在与球体相同的位置。当前输出如下所示:https ://i.imgur.com/H0tfNIx.jpg ..我错过了什么吗?
解决方案
推荐阅读
- java - 为什么java类型擦除会改变目标集合的非泛型类型?
- python - 如何将 GoogleDriveFile 转换为 PIL Image 或 ndarray?
- android - Kotlin 使用来自工作线程的协程来等待并从 UI 线程获取一些东西
- ios - 是否可以在 iOS 的同一个项目中为两个不同的构建(例如开发和生产)设置两个不同的 URL 架构?
- azure - Azure App Service Java - 发布上传请求大小失败
- javascript - 除非当前状态匹配或大于使用 setInterval 的最大值,否则将状态递增 1
- c# - Automapper 9:映射子属性
- mstest - 如何使用 PostSharp 使用 TestContext.WriteLine 记录文本
- kubernetes - 掌舵错误:发布需要回滚才能升级
- php - 如何让 PHP 脚本通过 PHP 命令重新启动/重新运行