Explorar o código

Re-import skeletal animation project and fix bugs

Panagiotis Christopoulos Charitos %!s(int64=3) %!d(string=hai) anos
pai
achega
d5ca69d502
Modificáronse 23 ficheiros con 33 adicións e 46 borrados
  1. 16 5
      AnKi/Importer/GltfImporterAnimation.cpp
  2. 2 2
      AnKi/Importer/GltfImporterMesh.cpp
  3. 2 2
      AnKi/Shaders/GBufferCommon.glsl
  4. 1 1
      Samples/SkeletalAnimation/Assets/Mesh_Robot.001_514ce62fac09d811.ankimdl
  5. BIN=BIN
      Samples/SkeletalAnimation/Assets/Mesh_e891faf0733c881d.ankimesh
  6. BIN=BIN
      Samples/SkeletalAnimation/Assets/Mesh_lod0_e891faf0733c881d.ankimesh
  7. 1 1
      Samples/SkeletalAnimation/Assets/Scene.lua
  8. BIN=BIN
      Samples/SkeletalAnimation/Assets/droid_30559463d0f81c57.ankimesh
  9. 1 1
      Samples/SkeletalAnimation/Assets/droid_Robot_7a560a2f010dcbd0.ankimdl
  10. BIN=BIN
      Samples/SkeletalAnimation/Assets/droid_lod0_30559463d0f81c57.ankimesh
  11. 6 30
      Samples/SkeletalAnimation/Assets/float.001_ccb9eb33e30c8fa4.ankianim
  12. BIN=BIN
      Samples/SkeletalAnimation/Assets/room.001_82c13d2071184ecf.ankimesh
  13. BIN=BIN
      Samples/SkeletalAnimation/Assets/room.001_lod0_82c13d2071184ecf.ankimesh
  14. 1 1
      Samples/SkeletalAnimation/Assets/room.001_room.red_99eb56f1f0b59f98.ankimdl
  15. BIN=BIN
      Samples/SkeletalAnimation/Assets/room.002_9aeac5bb7f16c0a7.ankimesh
  16. BIN=BIN
      Samples/SkeletalAnimation/Assets/room.002_lod0_9aeac5bb7f16c0a7.ankimesh
  17. 1 1
      Samples/SkeletalAnimation/Assets/room.002_room.green_acfa0c3d40cf5fea.ankimdl
  18. BIN=BIN
      Samples/SkeletalAnimation/Assets/room.003_225a06b3faa52c4c.ankimesh
  19. BIN=BIN
      Samples/SkeletalAnimation/Assets/room.003_lod0_225a06b3faa52c4c.ankimesh
  20. 1 1
      Samples/SkeletalAnimation/Assets/room.003_room.blue_1d4e9304c9ecd2fe.ankimdl
  21. BIN=BIN
      Samples/SkeletalAnimation/Assets/room_bb0180d3054a4db3.ankimesh
  22. BIN=BIN
      Samples/SkeletalAnimation/Assets/room_lod0_bb0180d3054a4db3.ankimesh
  23. 1 1
      Samples/SkeletalAnimation/Assets/room_room_2c303a64377351de.ankimdl

+ 16 - 5
AnKi/Importer/GltfImporterAnimation.cpp

@@ -50,11 +50,12 @@ static void optimizeChannel(DynamicArrayRaii<GltfAnimKey<T>>& arr, const T& iden
 		}
 
 		DynamicArrayRaii<GltfAnimKey<T>> newArr(&arr.getMemoryPool());
-		for(U32 i = 0; i < arr.getSize() - 2; i += 2)
+		U32 it = 0;
+		while(true)
 		{
-			const GltfAnimKey<T>& left = arr[i];
-			const GltfAnimKey<T>& middle = arr[i + 1];
-			const GltfAnimKey<T>& right = arr[i + 2];
+			const GltfAnimKey<T>& left = arr[it];
+			const GltfAnimKey<T>& middle = arr[it + 1];
+			const GltfAnimKey<T>& right = arr[it + 2];
 
 			newArr.emplaceBack(left);
 
@@ -77,8 +78,18 @@ static void optimizeChannel(DynamicArrayRaii<GltfAnimKey<T>>& arr, const T& iden
 				}
 			}
 
-			newArr.emplaceBack(right);
+			it += 2;
+			if(it + 2 >= arr.getSize())
+			{
+				break;
+			}
+		}
+
+		for(; it < arr.getSize(); ++it)
+		{
+			newArr.emplaceBack(arr[it]);
 		}
+
 		ANKI_ASSERT(newArr.getSize() <= arr.getSize());
 
 		// Check if identity

+ 2 - 2
AnKi/Importer/GltfImporterMesh.cpp

@@ -772,10 +772,10 @@ Error GltfImporter::writeMesh(const cgltf_mesh& mesh)
 			// Bone IDs
 			for(const SubMesh& submesh : submeshes[lod])
 			{
-				DynamicArrayRaii<UVec4> boneids(m_pool, submesh.m_verts.getSize());
+				DynamicArrayRaii<U8Vec4> boneids(m_pool, submesh.m_verts.getSize());
 				for(U32 v = 0; v < submesh.m_verts.getSize(); ++v)
 				{
-					boneids[v] = UVec4(submesh.m_verts[v].m_boneIds);
+					boneids[v] = U8Vec4(submesh.m_verts[v].m_boneIds);
 				}
 
 				ANKI_CHECK(file.write(&boneids[0], boneids.getSizeInBytes()));

+ 2 - 2
AnKi/Shaders/GBufferCommon.glsl

@@ -43,8 +43,8 @@ layout(location = kVertexStreamIdUv) in Vec2 in_uv;
 #	endif
 
 #	if ANKI_BONES
-layout(location = kVertexStreamIdBoneIds) in Vec4 in_boneWeights;
-layout(location = kVertexStreamIdBoneWeights) in UVec4 in_boneIndices;
+layout(location = kVertexStreamIdBoneIds) in UVec4 in_boneIndices;
+layout(location = kVertexStreamIdBoneWeights) in Vec4 in_boneWeights;
 #	endif
 
 #endif // defined(ANKI_VERTEX_SHADER)

+ 1 - 1
Samples/SkeletalAnimation/Assets/Mesh_Robot.001_514ce62fac09d811.ankimdl

@@ -1,7 +1,7 @@
 <model>
 	<modelPatches>
 		<modelPatch>
-			<mesh>Assets/Mesh_lod0_e891faf0733c881d.ankimesh</mesh>
+			<mesh>Assets/Mesh_e891faf0733c881d.ankimesh</mesh>
 			<material>Assets/Robot.001_851820527fac54db.ankimtl</material>
 		</modelPatch>
 	</modelPatches>

BIN=BIN
Samples/SkeletalAnimation/Assets/Mesh_e891faf0733c881d.ankimesh


BIN=BIN
Samples/SkeletalAnimation/Assets/Mesh_lod0_e891faf0733c881d.ankimesh


+ 1 - 1
Samples/SkeletalAnimation/Assets/Scene.lua

@@ -1,4 +1,4 @@
--- Generated by: /home/godlike/src/anki/buildd/Bin/GltfImporter droid.gltf /home/godlike/src/anki/Samples/SkeletalAnimation/Assets/ -rpath Assets -texrpath Assets
+-- Generated by: C:\Users\godli\src\anki\out\build\x64-Debug\Bin\GltfImporter.exe droid.gltf C:/Users/godli/src/anki/Samples/SkeletalAnimation/Assets/ -rpath Assets -texrpath Assets -v
 local scene = getSceneGraph()
 local events = getEventManager()
 

BIN=BIN
Samples/SkeletalAnimation/Assets/droid_30559463d0f81c57.ankimesh


+ 1 - 1
Samples/SkeletalAnimation/Assets/droid_Robot_7a560a2f010dcbd0.ankimdl

@@ -1,7 +1,7 @@
 <model>
 	<modelPatches>
 		<modelPatch>
-			<mesh>Assets/droid_lod0_30559463d0f81c57.ankimesh</mesh>
+			<mesh>Assets/droid_30559463d0f81c57.ankimesh</mesh>
 			<material>Assets/Robot_a9af3c46eb28a7d4.ankimtl</material>
 		</modelPatch>
 	</modelPatches>

BIN=BIN
Samples/SkeletalAnimation/Assets/droid_lod0_30559463d0f81c57.ankimesh


+ 6 - 30
Samples/SkeletalAnimation/Assets/float.001_ccb9eb33e30c8fa4.ankianim

@@ -70,6 +70,8 @@
 				<key time="2.000000">-0.034053 0.011187 0.148367 0.988283</key>
 				<key time="2.033333">-0.032728 0.011684 0.148573 0.988291</key>
 				<key time="2.066667">-0.031332 0.012207 0.148789 0.988297</key>
+				<key time="2.133333">-0.028396 0.013307 0.149243 0.988303</key>
+				<key time="2.200000">-0.025388 0.014433 0.149707 0.988299</key>
 				<key time="2.266667">-0.022452 0.015533 0.150158 0.988285</key>
 				<key time="2.300000">-0.021055 0.016056 0.150371 0.988275</key>
 				<key time="2.333333">-0.019729 0.016552 0.150574 0.988263</key>
@@ -86,49 +88,23 @@
 		<channel name="Body">
 			<positionKeys>
 				<key time="0.000000">-0.036258 3.786523 0.070229</key>
-				<key time="0.033333">-0.036258 3.790392 0.070229</key>
 				<key time="0.066667">-0.036258 3.801466 0.070229</key>
-				<key time="0.100000">-0.036258 3.818945 0.070229</key>
 				<key time="0.133333">-0.036258 3.842028 0.070229</key>
-				<key time="0.166667">-0.036258 3.869913 0.070229</key>
-				<key time="0.200000">-0.036258 3.901802 0.070229</key>
-				<key time="0.233333">-0.036258 3.936893 0.070229</key>
-				<key time="0.433333">-0.036258 4.169853 0.070229</key>
-				<key time="0.466667">-0.036258 4.204944 0.070229</key>
-				<key time="0.500000">-0.036258 4.236833 0.070229</key>
+				<key time="0.266667">-0.036258 3.974385 0.070229</key>
+				<key time="0.400000">-0.036258 4.132361 0.070229</key>
 				<key time="0.533333">-0.036258 4.264719 0.070229</key>
-				<key time="0.566667">-0.036258 4.287801 0.070229</key>
 				<key time="0.600000">-0.036258 4.305280 0.070229</key>
-				<key time="0.633333">-0.036258 4.316354 0.070229</key>
 				<key time="0.666667">-0.036258 4.320224 0.070229</key>
-				<key time="0.700000">-0.036258 4.317838 0.070229</key>
-				<key time="0.733333">-0.036258 4.311364 0.070229</key>
-				<key time="0.766667">-0.036258 4.301822 0.070229</key>
-				<key time="0.900000">-0.036258 4.253434 0.070229</key>
-				<key time="0.933333">-0.036258 4.243893 0.070229</key>
-				<key time="0.966667">-0.036258 4.237418 0.070229</key>
+				<key time="0.800000">-0.036258 4.290236 0.070229</key>
 				<key time="1.000000">-0.036258 4.235033 0.070229</key>
-				<key time="1.033333">-0.036258 4.239528 0.070229</key>
 				<key time="1.066667">-0.036258 4.251730 0.070229</key>
-				<key time="1.100000">-0.036258 4.269712 0.070229</key>
-				<key time="1.233333">-0.036258 4.360908 0.070229</key>
 				<key time="1.266667">-0.036258 4.378891 0.070229</key>
-				<key time="1.300000">-0.036258 4.391092 0.070229</key>
 				<key time="1.333333">-0.036258 4.395588 0.070229</key>
-				<key time="1.366667">-0.036258 4.393478 0.070229</key>
-				<key time="1.400000">-0.036258 4.387750 0.070229</key>
 				<key time="1.600000">-0.036258 4.328062 0.070229</key>
-				<key time="1.633333">-0.036258 4.322334 0.070229</key>
-				<key time="1.666667">-0.036258 4.320224 0.070229</key>
-				<key time="2.233333">-0.036258 4.320224 0.070229</key>
+				<key time="2.133333">-0.036258 4.320224 0.070229</key>
 				<key time="2.266667">-0.036258 4.307793 0.070229</key>
-				<key time="2.300000">-0.036258 4.273710 0.070229</key>
 				<key time="2.333333">-0.036258 4.222786 0.070229</key>
-				<key time="2.366667">-0.036258 4.159832 0.070229</key>
-				<key time="2.400000">-0.036258 4.089662 0.070229</key>
-				<key time="2.433333">-0.036258 4.017085 0.070229</key>
 				<key time="2.466667">-0.036258 3.946914 0.070229</key>
-				<key time="2.500000">-0.036258 3.883960 0.070229</key>
 				<key time="2.533333">-0.036258 3.833036 0.070229</key>
 				<key time="2.566667">-0.036258 3.798953 0.070229</key>
 				<key time="2.600000">-0.036258 3.786523 0.070229</key>

BIN=BIN
Samples/SkeletalAnimation/Assets/room.001_82c13d2071184ecf.ankimesh


BIN=BIN
Samples/SkeletalAnimation/Assets/room.001_lod0_82c13d2071184ecf.ankimesh


+ 1 - 1
Samples/SkeletalAnimation/Assets/room.001_room.red_99eb56f1f0b59f98.ankimdl

@@ -1,7 +1,7 @@
 <model>
 	<modelPatches>
 		<modelPatch>
-			<mesh>Assets/room.001_lod0_82c13d2071184ecf.ankimesh</mesh>
+			<mesh>Assets/room.001_82c13d2071184ecf.ankimesh</mesh>
 			<material>Assets/room.red_4176c8682cee36ac.ankimtl</material>
 		</modelPatch>
 	</modelPatches>

BIN=BIN
Samples/SkeletalAnimation/Assets/room.002_9aeac5bb7f16c0a7.ankimesh


BIN=BIN
Samples/SkeletalAnimation/Assets/room.002_lod0_9aeac5bb7f16c0a7.ankimesh


+ 1 - 1
Samples/SkeletalAnimation/Assets/room.002_room.green_acfa0c3d40cf5fea.ankimdl

@@ -1,7 +1,7 @@
 <model>
 	<modelPatches>
 		<modelPatch>
-			<mesh>Assets/room.002_lod0_9aeac5bb7f16c0a7.ankimesh</mesh>
+			<mesh>Assets/room.002_9aeac5bb7f16c0a7.ankimesh</mesh>
 			<material>Assets/room.green_c7dc339831ac73a2.ankimtl</material>
 		</modelPatch>
 	</modelPatches>

BIN=BIN
Samples/SkeletalAnimation/Assets/room.003_225a06b3faa52c4c.ankimesh


BIN=BIN
Samples/SkeletalAnimation/Assets/room.003_lod0_225a06b3faa52c4c.ankimesh


+ 1 - 1
Samples/SkeletalAnimation/Assets/room.003_room.blue_1d4e9304c9ecd2fe.ankimdl

@@ -1,7 +1,7 @@
 <model>
 	<modelPatches>
 		<modelPatch>
-			<mesh>Assets/room.003_lod0_225a06b3faa52c4c.ankimesh</mesh>
+			<mesh>Assets/room.003_225a06b3faa52c4c.ankimesh</mesh>
 			<material>Assets/room.blue_21e71ba855d95ca2.ankimtl</material>
 		</modelPatch>
 	</modelPatches>

BIN=BIN
Samples/SkeletalAnimation/Assets/room_bb0180d3054a4db3.ankimesh


BIN=BIN
Samples/SkeletalAnimation/Assets/room_lod0_bb0180d3054a4db3.ankimesh


+ 1 - 1
Samples/SkeletalAnimation/Assets/room_room_2c303a64377351de.ankimdl

@@ -1,7 +1,7 @@
 <model>
 	<modelPatches>
 		<modelPatch>
-			<mesh>Assets/room_lod0_bb0180d3054a4db3.ankimesh</mesh>
+			<mesh>Assets/room_bb0180d3054a4db3.ankimesh</mesh>
 			<material>Assets/room_bb0180d3054a4db3.ankimtl</material>
 		</modelPatch>
 	</modelPatches>