ThreeJS,3D对象纹理不能仅在线工作

时间:2016-05-13 18:58:18

标签: json 3d three.js textures maya

我正在使用three.js为AR应用程序在使用JSARToolKit检测到的标记上显示3D对象(从Maya导出,maya导出器为3j)。

这一切在localhost上工作正常(我看到纹理),但是当我在线上传它(github)并且我看到预览对象全部显示为没有纹理的黑色(就像我删除光线一样)

// load the model
var loader = new THREE.JSONLoader;
var object;
//var geometry = new THREE.BoxGeometry(1, 1, 1);
loader.load('js/object3d.js', function(geometry, materials){
var material = new THREE.MeshFaceMaterial(materials);
object = new THREE.Mesh(geometry, material);

container.add(object);
});

var ambLight = new THREE.AmbientLight( 0x909090, 2.0 );
container.add( ambLight );

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我不确定这是否是问题,但可能是您的加载程序遇到了一些错误,但由于您没有为加载程序设置错误处理程序,因此您无法收到通知。

JSONLoader加载方法需要四个参数(urlonLoadonProgressonError),因为您可以看到here in the class on line 40。< / p>

尝试设置错误处理程序(onError回调方法),看看你得到了什么。例如:

var onload = function(geometry, materials){
    var material = new THREE.MeshFaceMaterial(materials);
    object = new THREE.Mesh(geometry, material);
    container.add(object);
});
var onProgress = function(){
    // your optional on progress logic
}
var onError = function(error){
    console.log( error );
}

var loader = new THREE.JSONLoader;
loader.load('js/object3d.js', onLoad, onProgress, onError);