Lef*_*fty 2 javascript json three.js
首先,我已经读过这个问题没有帮助
我怎么做:首先我将模型从C4D导出到.ojb.然后我将obj导入www.trheejs/editor
我填补了所有空白

然后从树中我选择我的对象并将其导出到Threejs对象,它保存一个.json文件
我的代码
<script>
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var kiss = new THREE.Object3D(), loader = new THREE.JSONLoader(true);
loader.load( "brikk2.json", function ( geometry, materials ) {
var mesh = new THREE.Mesh( geometry, new THREE.MeshPhongMaterial( { color: 0xff0000, ambient: 0xff0000 } ) );
scene.add( mesh );
});
var render = function () {
requestAnimationFrame(render);
renderer.render(scene, camera);
};
render();
</script>
Run Code Online (Sandbox Code Playgroud)
当我运行时,我有这些错误消息
THREE.WebGLRenderer 67 three.js:20806
THREE.WebGLRenderer: elementindex as unsigned integer not supported. three.js:26942
XHR finished loading: "http://xxxxxx.xx/tst/mrdoob-three2/brikk2.json". three.js:12018
THREE.JSONLoader.loadAjaxJSON three.js:12018
THREE.JSONLoader.load three.js:11942
load test.html:23
(anonymous function) test.html:28
Uncaught TypeError: Cannot read property 'length' of undefined three.js:12087
parseModel three.js:12087
THREE.JSONLoader.parse three.js:12028
xhr.onreadystatechange three.js:11969
Run Code Online (Sandbox Code Playgroud)
Json我加载
{
"metadata": {
"version": 4.3,
"type": "Object",
"generator": "ObjectExporter"
},
"geometries": [
{
"uuid": "213E28EF-E388-46FE-AED3-54695667E086",
"name": "brikkG",
"type": "Geometry",
"data": {
"vertices": [0.036304,-0.016031,-0.027174,0.036304,0.......
........ 232,1228,1139,1141,1140,1]
}
}],
"materials": [
{
"uuid": "F74C77E4-8371-41BC-85CA-31FC96916CC6",
"name": "lego",
"type": "MeshPhongMaterial",
"color": 16721408,
"ambient": 16777215,
"emissive": 0,
"specular": 16777215,
"shininess": 30,
"opacity": 1,
"transparent": false,
"wireframe": false
}],
"object": {
"uuid": "3BAAB8CA-1EB7-464A-8C6D-FC4BBB3C63C6",
"name": "BrikkM",
"type": "Mesh",
"geometry": "213E28EF-E388-46FE-AED3-54695667E086",
"material": "F74C77E4-8371-41BC-85CA-31FC96916CC6",
"matrix": [1000,0,0,0,0,1000,0,0,0,0,1000,0,0,0,0,1]
}
}
Run Code Online (Sandbox Code Playgroud)
json文件的结构

基本上我已经尝试了所有我读过的关于将本机json导入ThreeJS,我尝试从treejs /编辑器或clara.io的文件仍然有相同的错误信息,我不知道,我花了3天尝试一路上我读解决这个问题.
如果我尝试创建几何像CubeGeometry它渲染没有问题,但很快我尝试使用原生json,没有任何工作了
有人可以帮忙吗?
Lef*_*fty 10
好的,我在这里找到答案:http://helloenjoy.com/2013/from-unity-to-three-js/
本机json代码是完美的,它只是没有意义加载JSONLoader但使用ObjectLoader(不要像OBILoader那样与我的实验中的一个不匹配).JSONLoader意味着加载json,但具有不同的格式/结构.ObjectLoader意味着加载本机格式,该格式也是用json编写的,但具有原生结构/格式.
所以用
var loader = new THREE.ObjectLoader();
loader.load( 'brikk2.json', function ( object ) {
scene.add( object );
} );
Run Code Online (Sandbox Code Playgroud)
它正在发挥作用
完整的示例代码
<body>
<script src="build/three.min.js"></script>
<script>
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 0.1, 1000 );
var renderer = new THREE.WebGLRenderer();
renderer.setClearColor( 0xffffff, 1);
renderer.setSize( window.innerWidth, window.innerHeight );
document.body.appendChild( renderer.domElement );
var ambient = new THREE.AmbientLight( 0x101030 );
scene.add( ambient );
var directionalLight = new THREE.DirectionalLight( 0xffeedd );
directionalLight.position.set( 0, 0, 1 );
scene.add( directionalLight );
var loader = new THREE.ObjectLoader();
loader.load( 'brikk2.js', function ( object ) {
scene.add( object );
} );
camera.position.z = 5;
var render = function () {
requestAnimationFrame(render);
renderer.render(scene, camera);
};
render();
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
编辑
我在顶部问题中显示的顶部代码是正确的,但它是用于几何加载
loader = new THREE.JSONLoader();
loader.load( 'ugeometry.json', function ( geometry ) {
mesh = new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( { envMap: THREE.ImageUtils.loadTexture( 'environment.jpg', new THREE.SphericalReflectionMapping() ), overdraw: 0.5 } ) );
scene.add( mesh );
Run Code Online (Sandbox Code Playgroud)
所以回顾一下.
如果从三个/编辑器或Clara.io你保存GEOMETRY使用JSONLoader,如果你保存为OBJECT使用ObjectLoader,如果你保存为SCENE他们应该是一个SceneLoader(未验证)
| 归档时间: |
|
| 查看次数: |
7700 次 |
| 最近记录: |