mirror of
https://github.com/bevyengine/bevy
synced 2024-11-26 06:30:19 +00:00
model loading works!
This commit is contained in:
parent
75ab0e21e5
commit
1143f16743
8 changed files with 171 additions and 616 deletions
|
@ -69,4 +69,4 @@ type-uuid = "0.1"
|
||||||
env_logger = "0.7"
|
env_logger = "0.7"
|
||||||
|
|
||||||
[profile.dev]
|
[profile.dev]
|
||||||
opt-level = 3
|
# opt-level = 3
|
|
@ -53,16 +53,35 @@ fn load_node(buffer_data: &[Vec<u8>], node: &gltf::Node, depth: i32) -> Result<M
|
||||||
reader
|
reader
|
||||||
.read_positions()
|
.read_positions()
|
||||||
.map(|v| VertexAttribute {
|
.map(|v| VertexAttribute {
|
||||||
name: "position".into(),
|
name: "Vertex_Position".into(),
|
||||||
values: VertexAttributeValues::Float3(v.collect()),
|
values: VertexAttributeValues::Float3(v.collect()),
|
||||||
})
|
})
|
||||||
.map(|vertex_attribute| mesh.attributes.push(vertex_attribute));
|
.map(|vertex_attribute| mesh.attributes.push(vertex_attribute));
|
||||||
|
|
||||||
// let indices = reader.read_indices().unwrap();
|
reader
|
||||||
|
.read_normals()
|
||||||
|
.map(|v| VertexAttribute {
|
||||||
|
name: "Vertex_Normal".into(),
|
||||||
|
values: VertexAttributeValues::Float3(v.collect()),
|
||||||
|
})
|
||||||
|
.map(|vertex_attribute| mesh.attributes.push(vertex_attribute));
|
||||||
|
|
||||||
|
reader
|
||||||
|
.read_tex_coords(0)
|
||||||
|
.map(|v| VertexAttribute {
|
||||||
|
name: "Vertex_Uv".into(),
|
||||||
|
values: VertexAttributeValues::Float2(v.into_f32().collect()),
|
||||||
|
})
|
||||||
|
.map(|vertex_attribute| mesh.attributes.push(vertex_attribute));
|
||||||
|
|
||||||
|
|
||||||
|
reader.read_indices().map(|indices| {
|
||||||
|
mesh.indices = Some(indices.into_u32().collect::<Vec<u32>>());
|
||||||
|
});
|
||||||
|
|
||||||
return Ok(mesh);
|
return Ok(mesh);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
println!();
|
|
||||||
|
|
||||||
for child in node.children() {
|
for child in node.children() {
|
||||||
return Ok(load_node(buffer_data, &child, depth + 1)?);
|
return Ok(load_node(buffer_data, &child, depth + 1)?);
|
||||||
|
|
Binary file not shown.
|
@ -1,142 +0,0 @@
|
||||||
{
|
|
||||||
"asset": {
|
|
||||||
"generator": "COLLADA2GLTF",
|
|
||||||
"version": "2.0"
|
|
||||||
},
|
|
||||||
"scene": 0,
|
|
||||||
"scenes": [
|
|
||||||
{
|
|
||||||
"nodes": [
|
|
||||||
0
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"nodes": [
|
|
||||||
{
|
|
||||||
"children": [
|
|
||||||
1
|
|
||||||
],
|
|
||||||
"matrix": [
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
-1.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"mesh": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"meshes": [
|
|
||||||
{
|
|
||||||
"primitives": [
|
|
||||||
{
|
|
||||||
"attributes": {
|
|
||||||
"NORMAL": 1,
|
|
||||||
"POSITION": 2
|
|
||||||
},
|
|
||||||
"indices": 0,
|
|
||||||
"mode": 4,
|
|
||||||
"material": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"name": "Mesh"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"accessors": [
|
|
||||||
{
|
|
||||||
"bufferView": 0,
|
|
||||||
"byteOffset": 0,
|
|
||||||
"componentType": 5123,
|
|
||||||
"count": 36,
|
|
||||||
"max": [
|
|
||||||
23
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"type": "SCALAR"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 1,
|
|
||||||
"byteOffset": 0,
|
|
||||||
"componentType": 5126,
|
|
||||||
"count": 24,
|
|
||||||
"max": [
|
|
||||||
1.0,
|
|
||||||
1.0,
|
|
||||||
1.0
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
-1.0,
|
|
||||||
-1.0,
|
|
||||||
-1.0
|
|
||||||
],
|
|
||||||
"type": "VEC3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 1,
|
|
||||||
"byteOffset": 288,
|
|
||||||
"componentType": 5126,
|
|
||||||
"count": 24,
|
|
||||||
"max": [
|
|
||||||
0.5,
|
|
||||||
0.5,
|
|
||||||
0.5
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
-0.5,
|
|
||||||
-0.5,
|
|
||||||
-0.5
|
|
||||||
],
|
|
||||||
"type": "VEC3"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"materials": [
|
|
||||||
{
|
|
||||||
"pbrMetallicRoughness": {
|
|
||||||
"baseColorFactor": [
|
|
||||||
0.800000011920929,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
1.0
|
|
||||||
],
|
|
||||||
"metallicFactor": 0.0
|
|
||||||
},
|
|
||||||
"name": "Red"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"bufferViews": [
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 576,
|
|
||||||
"byteLength": 72,
|
|
||||||
"target": 34963
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 0,
|
|
||||||
"byteLength": 576,
|
|
||||||
"byteStride": 12,
|
|
||||||
"target": 34962
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"buffers": [
|
|
||||||
{
|
|
||||||
"byteLength": 648,
|
|
||||||
"uri": "Box0.bin"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,468 +0,0 @@
|
||||||
{
|
|
||||||
"accessors": [
|
|
||||||
{
|
|
||||||
"bufferView": 0,
|
|
||||||
"componentType": 5126,
|
|
||||||
"count": 926,
|
|
||||||
"type": "VEC2",
|
|
||||||
"max": [
|
|
||||||
0.992169142,
|
|
||||||
-0.007998445
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
0.0107366741,
|
|
||||||
-0.992534757
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 1,
|
|
||||||
"componentType": 5126,
|
|
||||||
"count": 926,
|
|
||||||
"type": "VEC3",
|
|
||||||
"max": [
|
|
||||||
1.0,
|
|
||||||
1.0,
|
|
||||||
1.0
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
-1.0,
|
|
||||||
-1.0,
|
|
||||||
-1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 2,
|
|
||||||
"componentType": 5126,
|
|
||||||
"count": 926,
|
|
||||||
"type": "VEC4",
|
|
||||||
"max": [
|
|
||||||
1.0,
|
|
||||||
0.9999658,
|
|
||||||
1.0,
|
|
||||||
1.0
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
-1.0,
|
|
||||||
-0.962171,
|
|
||||||
-1.0,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 3,
|
|
||||||
"componentType": 5126,
|
|
||||||
"count": 926,
|
|
||||||
"type": "VEC3",
|
|
||||||
"max": [
|
|
||||||
7.74559927,
|
|
||||||
12.8321095,
|
|
||||||
2.31570983
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
-7.74559927,
|
|
||||||
-12.8321095,
|
|
||||||
-2.31570983
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 4,
|
|
||||||
"componentType": 5123,
|
|
||||||
"count": 2616,
|
|
||||||
"type": "SCALAR",
|
|
||||||
"max": [
|
|
||||||
925
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 5,
|
|
||||||
"componentType": 5126,
|
|
||||||
"count": 756,
|
|
||||||
"type": "VEC2",
|
|
||||||
"max": [
|
|
||||||
0.8007193,
|
|
||||||
-0.0581455827
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
0.351246148,
|
|
||||||
-0.361011624
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 6,
|
|
||||||
"componentType": 5126,
|
|
||||||
"count": 756,
|
|
||||||
"type": "VEC3",
|
|
||||||
"max": [
|
|
||||||
1.0,
|
|
||||||
1.0,
|
|
||||||
0.999998
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
-1.0,
|
|
||||||
-1.0,
|
|
||||||
-0.999998
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 7,
|
|
||||||
"componentType": 5126,
|
|
||||||
"count": 756,
|
|
||||||
"type": "VEC4",
|
|
||||||
"max": [
|
|
||||||
0.9997526,
|
|
||||||
1.0,
|
|
||||||
0.999752462,
|
|
||||||
1.0
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
-0.9995128,
|
|
||||||
-1.0,
|
|
||||||
-0.999752462,
|
|
||||||
1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 8,
|
|
||||||
"componentType": 5126,
|
|
||||||
"count": 756,
|
|
||||||
"type": "VEC3",
|
|
||||||
"max": [
|
|
||||||
0.129208073,
|
|
||||||
0.6523504,
|
|
||||||
0.129208073
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
-0.129208073,
|
|
||||||
-0.6523504,
|
|
||||||
-0.129208073
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 9,
|
|
||||||
"componentType": 5123,
|
|
||||||
"count": 3744,
|
|
||||||
"type": "SCALAR",
|
|
||||||
"max": [
|
|
||||||
755
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 10,
|
|
||||||
"componentType": 5126,
|
|
||||||
"count": 2463,
|
|
||||||
"type": "VEC2",
|
|
||||||
"max": [
|
|
||||||
0.9923278,
|
|
||||||
-0.00728821754
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
0.3673209,
|
|
||||||
-0.413352221
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 11,
|
|
||||||
"componentType": 5126,
|
|
||||||
"count": 2463,
|
|
||||||
"type": "VEC3",
|
|
||||||
"max": [
|
|
||||||
1.0,
|
|
||||||
1.0,
|
|
||||||
1.0
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
-1.0,
|
|
||||||
-1.0,
|
|
||||||
-1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 12,
|
|
||||||
"componentType": 5126,
|
|
||||||
"count": 2463,
|
|
||||||
"type": "VEC4",
|
|
||||||
"max": [
|
|
||||||
1.0,
|
|
||||||
1.0,
|
|
||||||
1.0,
|
|
||||||
1.0
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
-1.0,
|
|
||||||
-1.0,
|
|
||||||
-1.0,
|
|
||||||
-1.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 13,
|
|
||||||
"componentType": 5126,
|
|
||||||
"count": 2463,
|
|
||||||
"type": "VEC3",
|
|
||||||
"max": [
|
|
||||||
1.03408229,
|
|
||||||
2.529281,
|
|
||||||
1.03408468
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
-1.03408229,
|
|
||||||
-2.529281,
|
|
||||||
-1.03408468
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"bufferView": 14,
|
|
||||||
"componentType": 5123,
|
|
||||||
"count": 9822,
|
|
||||||
"type": "SCALAR",
|
|
||||||
"max": [
|
|
||||||
2462
|
|
||||||
],
|
|
||||||
"min": [
|
|
||||||
0
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"asset": {
|
|
||||||
"generator": "glTF Tools for Unity",
|
|
||||||
"version": "2.0"
|
|
||||||
},
|
|
||||||
"bufferViews": [
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteLength": 7408
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 7408,
|
|
||||||
"byteLength": 11112
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 18520,
|
|
||||||
"byteLength": 14816
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 33336,
|
|
||||||
"byteLength": 11112
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 44448,
|
|
||||||
"byteLength": 5232
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 49680,
|
|
||||||
"byteLength": 6048
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 55728,
|
|
||||||
"byteLength": 9072
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 64800,
|
|
||||||
"byteLength": 12096
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 76896,
|
|
||||||
"byteLength": 9072
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 85968,
|
|
||||||
"byteLength": 7488
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 93456,
|
|
||||||
"byteLength": 19704
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 113160,
|
|
||||||
"byteLength": 29556
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 142716,
|
|
||||||
"byteLength": 39408
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 182124,
|
|
||||||
"byteLength": 29556
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"buffer": 0,
|
|
||||||
"byteOffset": 211680,
|
|
||||||
"byteLength": 19644
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"buffers": [
|
|
||||||
{
|
|
||||||
"uri": "Lantern.bin",
|
|
||||||
"byteLength": 231324
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"images": [
|
|
||||||
{
|
|
||||||
"uri": "Lantern_baseColor.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"uri": "Lantern_roughnessMetallic.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"uri": "Lantern_normal.png"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"uri": "Lantern_emissive.png"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"meshes": [
|
|
||||||
{
|
|
||||||
"primitives": [
|
|
||||||
{
|
|
||||||
"attributes": {
|
|
||||||
"TEXCOORD_0": 0,
|
|
||||||
"NORMAL": 1,
|
|
||||||
"TANGENT": 2,
|
|
||||||
"POSITION": 3
|
|
||||||
},
|
|
||||||
"indices": 4,
|
|
||||||
"material": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"name": "LanternPole_Body"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"primitives": [
|
|
||||||
{
|
|
||||||
"attributes": {
|
|
||||||
"TEXCOORD_0": 5,
|
|
||||||
"NORMAL": 6,
|
|
||||||
"TANGENT": 7,
|
|
||||||
"POSITION": 8
|
|
||||||
},
|
|
||||||
"indices": 9,
|
|
||||||
"material": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"name": "LanternPole_Chain"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"primitives": [
|
|
||||||
{
|
|
||||||
"attributes": {
|
|
||||||
"TEXCOORD_0": 10,
|
|
||||||
"NORMAL": 11,
|
|
||||||
"TANGENT": 12,
|
|
||||||
"POSITION": 13
|
|
||||||
},
|
|
||||||
"indices": 14,
|
|
||||||
"material": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"name": "LanternPole_Lantern"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"materials": [
|
|
||||||
{
|
|
||||||
"pbrMetallicRoughness": {
|
|
||||||
"baseColorFactor": [
|
|
||||||
0.214041144,
|
|
||||||
0.214041144,
|
|
||||||
0.214041144,
|
|
||||||
1.0
|
|
||||||
],
|
|
||||||
"baseColorTexture": {
|
|
||||||
"index": 0
|
|
||||||
},
|
|
||||||
"metallicRoughnessTexture": {
|
|
||||||
"index": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"normalTexture": {
|
|
||||||
"index": 2
|
|
||||||
},
|
|
||||||
"emissiveFactor": [
|
|
||||||
1.0,
|
|
||||||
1.0,
|
|
||||||
1.0
|
|
||||||
],
|
|
||||||
"emissiveTexture": {
|
|
||||||
"index": 3
|
|
||||||
},
|
|
||||||
"name": "LanternPost_Mat"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"nodes": [
|
|
||||||
{
|
|
||||||
"mesh": 0,
|
|
||||||
"translation": [
|
|
||||||
-3.82315421,
|
|
||||||
13.01603,
|
|
||||||
0.0
|
|
||||||
],
|
|
||||||
"name": "LanternPole_Body"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"mesh": 1,
|
|
||||||
"translation": [
|
|
||||||
-9.582001,
|
|
||||||
21.0378723,
|
|
||||||
0.0
|
|
||||||
],
|
|
||||||
"name": "LanternPole_Chain"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"mesh": 2,
|
|
||||||
"translation": [
|
|
||||||
-9.582007,
|
|
||||||
18.0091515,
|
|
||||||
0.0
|
|
||||||
],
|
|
||||||
"name": "LanternPole_Lantern"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"children": [
|
|
||||||
0,
|
|
||||||
1,
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"name": "Lantern"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"scene": 0,
|
|
||||||
"scenes": [
|
|
||||||
{
|
|
||||||
"nodes": [
|
|
||||||
3
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"textures": [
|
|
||||||
{
|
|
||||||
"source": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"source": 3
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
BIN
examples/assets/Monkey.bin
Normal file
BIN
examples/assets/Monkey.bin
Normal file
Binary file not shown.
100
examples/assets/Monkey.gltf
Normal file
100
examples/assets/Monkey.gltf
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
{
|
||||||
|
"asset" : {
|
||||||
|
"generator" : "Khronos glTF Blender I/O v1.1.46",
|
||||||
|
"version" : "2.0"
|
||||||
|
},
|
||||||
|
"scene" : 0,
|
||||||
|
"scenes" : [
|
||||||
|
{
|
||||||
|
"name" : "Scene",
|
||||||
|
"nodes" : [
|
||||||
|
0
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"nodes" : [
|
||||||
|
{
|
||||||
|
"mesh" : 0,
|
||||||
|
"name" : "Suzanne"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"meshes" : [
|
||||||
|
{
|
||||||
|
"name" : "Suzanne",
|
||||||
|
"primitives" : [
|
||||||
|
{
|
||||||
|
"attributes" : {
|
||||||
|
"POSITION" : 0,
|
||||||
|
"NORMAL" : 1,
|
||||||
|
"TEXCOORD_0" : 2
|
||||||
|
},
|
||||||
|
"indices" : 3
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accessors" : [
|
||||||
|
{
|
||||||
|
"bufferView" : 0,
|
||||||
|
"componentType" : 5126,
|
||||||
|
"count" : 1968,
|
||||||
|
"max" : [
|
||||||
|
1.3671875,
|
||||||
|
0.8515625,
|
||||||
|
0.984375
|
||||||
|
],
|
||||||
|
"min" : [
|
||||||
|
-1.3671875,
|
||||||
|
-0.8515625,
|
||||||
|
-0.984375
|
||||||
|
],
|
||||||
|
"type" : "VEC3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView" : 1,
|
||||||
|
"componentType" : 5126,
|
||||||
|
"count" : 1968,
|
||||||
|
"type" : "VEC3"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView" : 2,
|
||||||
|
"componentType" : 5126,
|
||||||
|
"count" : 1968,
|
||||||
|
"type" : "VEC2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"bufferView" : 3,
|
||||||
|
"componentType" : 5123,
|
||||||
|
"count" : 2904,
|
||||||
|
"type" : "SCALAR"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"bufferViews" : [
|
||||||
|
{
|
||||||
|
"buffer" : 0,
|
||||||
|
"byteLength" : 23616,
|
||||||
|
"byteOffset" : 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer" : 0,
|
||||||
|
"byteLength" : 23616,
|
||||||
|
"byteOffset" : 23616
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer" : 0,
|
||||||
|
"byteLength" : 15744,
|
||||||
|
"byteOffset" : 47232
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buffer" : 0,
|
||||||
|
"byteLength" : 5808,
|
||||||
|
"byteOffset" : 62976
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"buffers" : [
|
||||||
|
{
|
||||||
|
"byteLength" : 68784,
|
||||||
|
"uri" : "Monkey.bin"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -1,6 +1,52 @@
|
||||||
use bevy::{gltf, prelude::*};
|
use bevy::{gltf, prelude::*};
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let mesh = gltf::load_gltf("examples/assets/Box.gltf").unwrap().unwrap();
|
App::build()
|
||||||
// App::build().add_default_plugins().run();
|
.add_default_plugins()
|
||||||
|
.add_startup_system(setup)
|
||||||
|
.add_system_init(bevy::input::system::exit_on_esc_system)
|
||||||
|
.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// set up a simple scene
|
||||||
|
fn setup(world: &mut World, resources: &mut Resources) {
|
||||||
|
let mesh = gltf::load_gltf("examples/assets/Monkey.gltf")
|
||||||
|
.unwrap()
|
||||||
|
.unwrap();
|
||||||
|
// create a cube and a plane mesh
|
||||||
|
let mut mesh_storage = resources.get_mut::<AssetStorage<Mesh>>().unwrap();
|
||||||
|
let mesh_handle = mesh_storage.add(mesh);
|
||||||
|
|
||||||
|
// create materials for our cube and plane
|
||||||
|
let mut material_storage = resources
|
||||||
|
.get_mut::<AssetStorage<StandardMaterial>>()
|
||||||
|
.unwrap();
|
||||||
|
let material_handle = material_storage.add(StandardMaterial {
|
||||||
|
albedo: Color::rgb(0.5, 0.4, 0.3),
|
||||||
|
..Default::default()
|
||||||
|
});
|
||||||
|
|
||||||
|
// add entities to the world
|
||||||
|
world
|
||||||
|
.build()
|
||||||
|
// mesh
|
||||||
|
.add_entity(MeshEntity {
|
||||||
|
mesh: mesh_handle,
|
||||||
|
material: material_handle,
|
||||||
|
..Default::default()
|
||||||
|
})
|
||||||
|
// light
|
||||||
|
.add_entity(LightEntity {
|
||||||
|
translation: Translation::new(4.0, -4.0, 5.0),
|
||||||
|
..Default::default()
|
||||||
|
})
|
||||||
|
// camera
|
||||||
|
.add_entity(CameraEntity {
|
||||||
|
local_to_world: LocalToWorld(Mat4::look_at_rh(
|
||||||
|
Vec3::new(2.0, -6.0, 2.0),
|
||||||
|
Vec3::new(0.0, 0.0, 0.0),
|
||||||
|
Vec3::new(0.0, 0.0, 1.0),
|
||||||
|
)),
|
||||||
|
..Default::default()
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue