Skip to content

Commit

Permalink
gltf2 normalize normals and quaternions for export.
Browse files Browse the repository at this point in the history
  • Loading branch information
fire committed Aug 12, 2021
1 parent 70fd73f commit 960e9e1
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions modules/gltf/gltf_document.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2455,15 +2455,19 @@ Error GLTFDocument::_serialize_meshes(Ref<GLTFState> state) {
varr.write[blend_i] = Vector3(varr[blend_i]) - src_varr[blend_i];
}
}

t["POSITION"] = _encode_accessor_as_vec3(state, varr, true);
}

t["POSITION"] = _encode_accessor_as_vec3(state, varr, true);
Vector<Vector3> narr = array_morph[Mesh::ARRAY_NORMAL];
if (varr.size()) {
if (narr.size()) {
for (int i = 0; i < narr.size(); i++) {
narr.write[i] = Vector3(narr[i]).normalized();
}
t["NORMAL"] = _encode_accessor_as_vec3(state, narr, true);
}
Vector<real_t> tarr = array_morph[Mesh::ARRAY_TANGENT];
const int ret_size = tarr.size() / 4;
Vector<Vector3> attribs;
attribs.resize(ret_size);
if (tarr.size()) {
const int ret_size = tarr.size() / 4;
Vector<Vector3> attribs;
Expand Down Expand Up @@ -4690,6 +4694,9 @@ Error GLTFDocument::_serialize_animations(Ref<GLTFState> state) {
Vector<real_t> times = Variant(track.rotation_track.times);
s["input"] = _encode_accessor_as_floats(state, times, false);
Vector<Quaternion> values = track.rotation_track.values;
for (int i = 0; i < values.size(); i++) {
values.write[i].normalize();
}
s["output"] = _encode_accessor_as_quaternions(state, values, false);

samplers.push_back(s);
Expand Down

0 comments on commit 960e9e1

Please sign in to comment.