【问题标题】:Three.js mesh position toJSON()三.js网格位置toJSON()
【发布时间】:2018-07-03 16:41:25
【问题描述】:

我有一个问题,使用 .toJSON().ObjectLoader()。 我正在创建一个带有位置的网格对象 (Object3D) 并将其转换为 JSON。

mesh.position.set(path.x, path.y, path.z);

Mesh {
uuid: 'AAA36A25-18C6-43CD-AF14-4D12826A8C06',
name: '',
type: 'Mesh',
parent: null,
children: [],
up: Vector3 { x: 0, y: 1, z: 0 },
position: Vector3 { x: 358.04999999981374, y: -4499.83, z: 
2521.2299999999814 },

var mesh_tojson = mesh.toJSON();

{ metadata: { version: 4.5, type: 'Object', generator: 'Object3D.toJSON' },
geometries:
[ { uuid: '0E18D023-CC64-4D83-AB28-C731BB1E5B1B',
   type: 'OctahedronGeometry',
   radius: 100,
   detail: 0 } ],
materials:
[ { uuid: '055D52FD-0767-44D8-A62F-C1514FE38111',
   type: 'MeshLambertMaterial',
   color: 16776960,
   emissive: 0,
   depthFunc: 3,
   depthTest: true,
   depthWrite: true,
   rotation: undefined,
   linewidth: undefined } ],
object:
 { uuid: 'AAA36A25-18C6-43CD-AF14-4D12826A8C06',
 type: 'Mesh',
 matrix: [ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ],
 geometry: '0E18D023-CC64-4D83-AB28-C731BB1E5B1B',
 material: '055D52FD-0767-44D8-A62F-C1514FE38111' } }

但是当我尝试加载 JSON 对象时,一切都很好,除了我失去了我的网格对象的位置属性。

var mesh = loader.parse(mesh.toJSON())

Mesh {
uuid: 'AAA36A25-18C6-43CD-AF14-4D12826A8C06',
name: '',
type: 'Mesh',
parent: null,
children: [],
up: Vector3 { x: 0, y: 1, z: 0 },
position: Vector3 { x: 0, y: 0, z: 0 },

如何保存我的对象在 JSON 对象中的位置并将其加载到场景中?

【问题讨论】:

    标签: three.js


    【解决方案1】:

    code for .toJSON() 中,不包括位置和旋转。您可以手动将它们添加到 JSON:

    mesh.matrix.toArray( json.object.matrix )
    

    您可能还需要在加载后手动重新应用它们,我不确定 THREE.ObjectLoader 是否会这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-23
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 2019-01-28
      • 2016-11-12
      • 2017-01-13
      • 2017-08-07
      相关资源
      最近更新 更多