Add the seal from TF2
This commit is contained in:
parent
f9e4187a10
commit
9010b5e821
19 changed files with 1887 additions and 66 deletions
1048
Data/resources/models/seal/seal.dae
Normal file
1048
Data/resources/models/seal/seal.dae
Normal file
File diff suppressed because one or more lines are too long
BIN
Data/resources/models/seal/seal.fbx
Normal file
BIN
Data/resources/models/seal/seal.fbx
Normal file
Binary file not shown.
BIN
Data/resources/models/seal/seal.png
Normal file
BIN
Data/resources/models/seal/seal.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 628 KiB |
BIN
Data/resources/models/seal/seal_normal.png
Normal file
BIN
Data/resources/models/seal/seal_normal.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 19 KiB |
BIN
Data/resources/models/seal/seal_normal_s.png
Normal file
BIN
Data/resources/models/seal/seal_normal_s.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 393 KiB |
BIN
Data/resources/models/seal/seal_skin1.png
Normal file
BIN
Data/resources/models/seal/seal_skin1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 659 KiB |
BIN
Data/resources/models/seal/seal_skin2.png
Normal file
BIN
Data/resources/models/seal/seal_skin2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 606 KiB |
BIN
Data/resources/models/seal/seal_whiskers.png
Normal file
BIN
Data/resources/models/seal/seal_whiskers.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.7 KiB |
|
@ -7,6 +7,8 @@ layout (location = 1) in vec3 normal;
|
|||
layout (location = 2) in vec2 texcoord;
|
||||
layout (location = 3) in vec3 tangent;
|
||||
layout (location = 4) in vec3 bitangent;
|
||||
layout (location = 5) in uvec4 bone_ids; // Skinning (experimental)
|
||||
layout (location = 6) in vec4 weights;
|
||||
|
||||
out vec3 v_position;
|
||||
out vec3 v_normal;
|
||||
|
@ -17,6 +19,10 @@ out vec3 v_bitangent;
|
|||
|
||||
out float v_id;
|
||||
|
||||
const int MAX_BONES = 48;
|
||||
uniform mat4 u_bones[MAX_BONES];
|
||||
uniform int u_has_bones;
|
||||
|
||||
void main()
|
||||
{
|
||||
v_position = position;
|
||||
|
@ -27,6 +33,15 @@ void main()
|
|||
v_bitangent = bitangent;
|
||||
|
||||
v_id = gl_VertexID;
|
||||
|
||||
if (u_has_bones == 1) {
|
||||
mat4 bone_transform = u_bones[bone_ids[0]] * weights[0];
|
||||
bone_transform += u_bones[bone_ids[1]] * weights[1];
|
||||
bone_transform += u_bones[bone_ids[2]] * weights[2];
|
||||
bone_transform += u_bones[bone_ids[3]] * weights[3];
|
||||
gl_Position = u_mvp * (bone_transform * vec4(v_position, 1.0));
|
||||
return;
|
||||
}
|
||||
|
||||
gl_Position = u_mvp * vec4(v_position, 1.0);
|
||||
}
|
||||
|
|
|
@ -1,56 +1,742 @@
|
|||
[02:08:00 AM] Info: Starting...
|
||||
[04:00:32 AM] Info: Starting...
|
||||
|
||||
KP3D version 2
|
||||
===============================
|
||||
Copyright (C) kpworld.xyz 2018-2024
|
||||
Contact me! @kp_cftsz
|
||||
|
||||
[02:08:00 AM] Info: Initializing SDL
|
||||
[02:08:00 AM] Info: Initializing OpenGL
|
||||
[02:08:00 AM] Info: OpenGL version: 4.6.0 NVIDIA 536.23
|
||||
[02:08:00 AM] Info: Initializing GLEW
|
||||
[02:08:00 AM] Info: Initializing SDL_mixer
|
||||
[02:08:00 AM] Info: Reticulating splines...
|
||||
[02:08:00 AM] Info: Ready!
|
||||
[02:08:00 AM] Info: Loading script: build-cylinder.scm
|
||||
[02:08:00 AM] Info: Loading script: build-stairs.scm
|
||||
[02:08:00 AM] Info: Loading material resource: block.png
|
||||
[02:08:00 AM] Info: Found normal map texture: materials/block_n.png
|
||||
[02:08:00 AM] Info: Loading material resource: brick2.jpg
|
||||
[02:08:00 AM] Info: Found normal map texture: materials/brick2_n.jpg
|
||||
[02:08:00 AM] Info: Loading material resource: bricks.jpg
|
||||
[02:08:00 AM] Info: Found normal map texture: materials/bricks_n.jpg
|
||||
[02:08:00 AM] Info: Loading material resource: FLAT5_7.png
|
||||
[02:08:00 AM] Info: Found normal map texture: materials/FLAT5_7_n.png
|
||||
[02:08:00 AM] Info: Loading material resource: floor0.png
|
||||
[02:08:00 AM] Info: Found normal map texture: materials/floor0_n.png
|
||||
[02:08:00 AM] Info: Loading material resource: floor1.png
|
||||
[02:08:00 AM] Info: Found normal map texture: materials/floor1_n.png
|
||||
[02:08:00 AM] Info: Loading material resource: GRASS2.png
|
||||
[02:08:00 AM] Info: Found normal map texture: materials/GRASS2_n.png
|
||||
[02:08:00 AM] Info: Loading material resource: hardwood.jpg
|
||||
[02:08:00 AM] Info: Found normal map texture: materials/hardwood_n.jpg
|
||||
[02:08:00 AM] Info: Loading texture resource: .kp3d/banner.png
|
||||
[02:08:00 AM] Info: Loading texture resource: .kp3d/crosshair.png
|
||||
[02:08:00 AM] Info: Loading texture resource: .kp3d/empty.png
|
||||
[02:08:00 AM] Info: Loading texture resource: .kp3d/logo.png
|
||||
[02:08:00 AM] Info: Loading texture resource: .kp3d/map_grid.png
|
||||
[02:08:00 AM] Info: Loading texture resource: .kp3d/not_found.png
|
||||
[02:08:00 AM] Info: Loading texture resource: .kp3d/skybox.png
|
||||
[02:08:00 AM] Info: Loading texture resource: .kp3d/uv_test.png
|
||||
[02:08:00 AM] Info: Loading texture resource: .kp3d/water.png
|
||||
[02:08:00 AM] Info: Loading texture resource: dot.png
|
||||
[02:08:00 AM] Info: Loading texture resource: editor/stem.png
|
||||
[02:08:00 AM] Info: Loading texture resource: logo.png
|
||||
[02:08:00 AM] Info: Loading texture resource: skyboxes/sky50e2dd1d496fc.jpg
|
||||
[02:08:00 AM] Info: Loading texture resource: skyboxes/sky8.jpg
|
||||
[02:08:00 AM] Info: Loading texture resource: skyboxes/sky9.jpg
|
||||
[02:08:00 AM] Info: Loading texture resource: skyboxes/skybox.jpg
|
||||
[02:08:00 AM] Info: Loading texture resource: skyboxes/skybox_11.jpg
|
||||
[02:08:00 AM] Info: Loading texture resource: skyboxes/skybox_14.jpg
|
||||
[02:08:00 AM] Info: Loading texture resource: skyboxes/skybox_15.jpg
|
||||
[02:08:00 AM] Info: Loading texture resource: skyboxes/skybox_3.jpg
|
||||
[02:08:00 AM] Info: Loading texture resource: skybox_16.jpg
|
||||
[02:08:00 AM] Info: Map init
|
||||
[02:08:00 AM] Info: Finalized mesh with 49 batches
|
||||
[02:08:03 AM] Info: Placed thing at {6.38296, -1.5, -7.31712}
|
||||
[04:00:32 AM] Info: Initializing SDL
|
||||
[04:00:32 AM] Info: Initializing OpenGL
|
||||
[04:00:32 AM] Info: OpenGL version: 4.6.0 NVIDIA 536.23
|
||||
[04:00:32 AM] Info: Initializing GLEW
|
||||
[04:00:32 AM] Info: Initializing SDL_mixer
|
||||
[04:00:32 AM] Info: Reticulating splines...
|
||||
[04:00:32 AM] Info: Ready!
|
||||
[04:00:32 AM] Info: Loading script: build-cylinder.scm
|
||||
[04:00:32 AM] Info: Loading script: build-stairs.scm
|
||||
[04:00:32 AM] Info: Loading material resource: block.png
|
||||
[04:00:32 AM] Info: Found normal map texture: materials/block_n.png
|
||||
[04:00:32 AM] Info: Loading material resource: brick2.jpg
|
||||
[04:00:32 AM] Info: Found normal map texture: materials/brick2_n.jpg
|
||||
[04:00:32 AM] Info: Loading material resource: bricks.jpg
|
||||
[04:00:32 AM] Info: Found normal map texture: materials/bricks_n.jpg
|
||||
[04:00:32 AM] Info: Loading material resource: FLAT5_7.png
|
||||
[04:00:32 AM] Info: Found normal map texture: materials/FLAT5_7_n.png
|
||||
[04:00:32 AM] Info: Loading material resource: floor0.png
|
||||
[04:00:32 AM] Info: Found normal map texture: materials/floor0_n.png
|
||||
[04:00:32 AM] Info: Loading material resource: floor1.png
|
||||
[04:00:32 AM] Info: Found normal map texture: materials/floor1_n.png
|
||||
[04:00:32 AM] Info: Loading material resource: GRASS2.png
|
||||
[04:00:32 AM] Info: Found normal map texture: materials/GRASS2_n.png
|
||||
[04:00:32 AM] Info: Loading material resource: hardwood.jpg
|
||||
[04:00:32 AM] Info: Found normal map texture: materials/hardwood_n.jpg
|
||||
[04:00:32 AM] Info: Loading texture resource: .kp3d/banner.png
|
||||
[04:00:32 AM] Info: Loading texture resource: .kp3d/crosshair.png
|
||||
[04:00:32 AM] Info: Loading texture resource: .kp3d/empty.png
|
||||
[04:00:32 AM] Info: Loading texture resource: .kp3d/logo.png
|
||||
[04:00:32 AM] Info: Loading texture resource: .kp3d/map_grid.png
|
||||
[04:00:32 AM] Info: Loading texture resource: .kp3d/not_found.png
|
||||
[04:00:32 AM] Info: Loading texture resource: .kp3d/skybox.png
|
||||
[04:00:32 AM] Info: Loading texture resource: .kp3d/uv_test.png
|
||||
[04:00:32 AM] Info: Loading texture resource: .kp3d/water.png
|
||||
[04:00:32 AM] Info: Loading texture resource: dot.png
|
||||
[04:00:32 AM] Info: Loading texture resource: editor/stem.png
|
||||
[04:00:32 AM] Info: Loading texture resource: logo.png
|
||||
[04:00:32 AM] Info: Loading texture resource: skyboxes/sky50e2dd1d496fc.jpg
|
||||
[04:00:32 AM] Info: Loading texture resource: skyboxes/sky8.jpg
|
||||
[04:00:32 AM] Info: Loading texture resource: skyboxes/sky9.jpg
|
||||
[04:00:32 AM] Info: Loading texture resource: skyboxes/skybox.jpg
|
||||
[04:00:32 AM] Info: Loading texture resource: skyboxes/skybox_11.jpg
|
||||
[04:00:32 AM] Info: Loading texture resource: skyboxes/skybox_14.jpg
|
||||
[04:00:32 AM] Info: Loading texture resource: skyboxes/skybox_15.jpg
|
||||
[04:00:33 AM] Info: Loading texture resource: skyboxes/skybox_3.jpg
|
||||
[04:00:33 AM] Info: Loading texture resource: skybox_16.jpg
|
||||
[04:00:33 AM] Info: FOUND ANIMATION: seal.qc_skeleton_seal.qc_skeleton, 0
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_body2: 1208
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_body1: 2068
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_head: 2188
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_eyeupper_l: 648
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_eyelower_l: 359
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_eyeupper_r: 636
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_eyelower_r: 359
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_jowl_l: 666
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_jowl_r: 818
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_flipper1_l: 272
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_flipper2_l: 304
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_flipper1_r: 272
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_flipper2_r: 304
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_body3: 1320
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_body4: 1436
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_body5: 1436
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_backflipper_r: 1358
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_backflipper_l: 1358
|
||||
[04:00:33 AM] Info: FOUND TEXTURE: seal.png
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_head: 24
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_eyeupper_l: 30
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_eyelower_l: 36
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_eyeupper_r: 30
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_eyelower_r: 36
|
||||
[04:00:33 AM] Info: FOUND TEXTURE: seal.png
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_jowl_l: 12
|
||||
[04:00:33 AM] Info: Num weights for seal_qc_skeleton_jowl_r: 12
|
||||
[04:00:33 AM] Info: FOUND TEXTURE: seal_whiskers.png
|
||||
[04:00:33 AM] Info: Map init
|
||||
[04:00:33 AM] Info: Finalized mesh with 49 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:42 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:44 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:45 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:46 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:47 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:47 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:47 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:47 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:47 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:47 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:47 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:47 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:47 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:47 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:47 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:47 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:57 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:57 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:57 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:57 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:57 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:57 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:57 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:57 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:57 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:57 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:57 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:57 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:57 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:58 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:59 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:59 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:59 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:59 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:59 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:59 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:59 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:59 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:59 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:59 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:59 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:59 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:59 AM] Info: Finalized mesh with 48 batches
|
||||
[04:00:59 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:05 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:06 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:07 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:09 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:09 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:09 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:09 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:09 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:09 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:09 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:09 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:10 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:14 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:17 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:18 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:19 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:20 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:20 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:20 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:20 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:20 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:20 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:20 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:20 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:20 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:20 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:20 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:20 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:20 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:23 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:29 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:31 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:31 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:32 AM] Info: Finalized mesh with 48 batches
|
||||
[04:01:37 AM] Info: Starting animation
|
||||
[04:01:46 AM] Info: Finalized mesh with 54 batches
|
||||
[04:01:51 AM] Info: Finalized mesh with 53 batches
|
||||
[04:01:54 AM] Info: Finalized mesh with 53 batches
|
||||
[04:02:07 AM] Info: Finalized mesh with 53 batches
|
||||
[04:02:15 AM] Info: Finalized mesh with 53 batches
|
||||
[04:02:17 AM] Info: Finalized mesh with 53 batches
|
||||
[04:02:19 AM] Info: Finalized mesh with 53 batches
|
||||
[04:02:38 AM] Info: Finalized mesh with 53 batches
|
||||
|
|
|
@ -427,8 +427,8 @@ ErrCode Model::LoadModel(const std::string& path, const std::string& main_textur
|
|||
m_faces = 0;
|
||||
|
||||
// Run the texture loading routine (this can vary based on how we've decided to load the model)
|
||||
if (load_textures)
|
||||
load_textures();
|
||||
//if (load_textures)
|
||||
// load_textures();
|
||||
|
||||
// TODO: Retarded busy-waiting, fix whenever I restructure this
|
||||
//
|
||||
|
@ -436,8 +436,10 @@ ErrCode Model::LoadModel(const std::string& path, const std::string& main_textur
|
|||
// fallback and just load whatever textures are in the store by default, because the way the editor/games work is that ALL
|
||||
// textures in textures/, including textures/tex3d/ (where model textures go) are loaded in one go
|
||||
//
|
||||
while (!m_textures.size())
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(50));
|
||||
//while (!m_textures.size())
|
||||
// std::this_thread::sleep_for(std::chrono::milliseconds(50));
|
||||
|
||||
std::string parent_dir = kp3d_path.substr(0, kp3d_path.find_last_of("/\\"));
|
||||
|
||||
m_scene = m_importer.ReadFile(
|
||||
kp3d_path, aiProcess_Triangulate | aiProcess_GenSmoothNormals | aiProcess_FlipUVs | aiProcess_OptimizeMeshes
|
||||
|
@ -450,7 +452,7 @@ ErrCode Model::LoadModel(const std::string& path, const std::string& main_textur
|
|||
m_global_inverse_transform = m_scene->mRootNode->mTransformation;
|
||||
m_global_inverse_transform = m_scene->mRootNode->mTransformation.Inverse();
|
||||
|
||||
std::string parent_dir = kp3d_path.substr(0, kp3d_path.find_last_of("/\\"));
|
||||
// exit(1);
|
||||
|
||||
// TODO: Go through the scene's material information and try to grab diffuse, AO, normal map, etc. textures...
|
||||
|
||||
|
@ -460,6 +462,7 @@ ErrCode Model::LoadModel(const std::string& path, const std::string& main_textur
|
|||
{
|
||||
std::string name(m_scene->mAnimations[i]->mName.C_Str());
|
||||
m_animation_map.emplace(name, i);
|
||||
KP3D_LOG_INFO("FOUND ANIMATION: {}, {}", name, i);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -478,11 +481,11 @@ ErrCode Model::LoadModel(const std::string& path, const std::string& main_textur
|
|||
|
||||
if (noflip)
|
||||
{
|
||||
def.vertices.push_back(Vertex3D(Vec3{pos.x, pos.y, pos.z}, Vec3{nor.x, nor.y, nor.z}, Vec2{tex.x, tex.y}));
|
||||
def.vertices.push_back(Vertex3D(Vec3{pos.x, pos.y, pos.z}, Vec3{nor.x, nor.y, nor.z}, Vec2{tex.x, -tex.y}));
|
||||
continue;
|
||||
}
|
||||
|
||||
def.vertices.push_back(Vertex3D(Vec3{pos.x, pos.y, -pos.z}, Vec3{nor.x, nor.y, -nor.z}, Vec2{tex.x, tex.y}));
|
||||
def.vertices.push_back(Vertex3D(Vec3{pos.x, pos.y, -pos.z}, Vec3{nor.x, nor.y, -nor.z}, Vec2{tex.x, -tex.y}));
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < model->mNumFaces; i++)
|
||||
|
@ -507,10 +510,31 @@ ErrCode Model::LoadModel(const std::string& path, const std::string& main_textur
|
|||
def.base_vertex = m_vertices;
|
||||
def.base_index = m_faces * 3;
|
||||
|
||||
Texture* tex = nullptr,* normal_tex = nullptr;
|
||||
if (m_scene->HasMaterials())
|
||||
{
|
||||
aiString path;
|
||||
if (!m_scene->mMaterials[model->mMaterialIndex]->GetTexture(aiTextureType_DIFFUSE, 0, &path))
|
||||
{
|
||||
tex = new Texture();
|
||||
tex->Load("$" + parent_dir + "/" + path.C_Str(), false, Texture::FILTER_LINEAR);
|
||||
m_textures.push_back(tex);
|
||||
KP3D_LOG_INFO("FOUND TEXTURE: {}", path.C_Str());
|
||||
}
|
||||
aiString normal_path;
|
||||
if (!m_scene->mMaterials[model->mMaterialIndex]->GetTexture(aiTextureType_NORMALS, 0, &path))
|
||||
{
|
||||
normal_tex = new Texture();
|
||||
normal_tex->Load("$" + parent_dir + "/" + path.C_Str(), false, Texture::FILTER_LINEAR);
|
||||
m_normal_textures.push_back(normal_tex);
|
||||
KP3D_LOG_INFO("FOUND NORMAL TEXTURE: {}", path.C_Str());
|
||||
}
|
||||
}
|
||||
|
||||
if (model->HasBones())
|
||||
m->AddSkinnedBatch(m_textures.back(), def.vertices, def.indices, def.bones, false);
|
||||
m->AddSkinnedBatch(tex, def.vertices, def.indices, def.bones, false, normal_tex);
|
||||
else
|
||||
m->AddIndexedBatch(m_textures.back(), def.vertices, def.indices);
|
||||
m->AddIndexedBatch(tex, def.vertices, def.indices, normal_tex);
|
||||
|
||||
m->Finalize();
|
||||
m_meshes.push_back(m);
|
||||
|
|
|
@ -84,6 +84,7 @@ private:
|
|||
|
||||
std::vector<StaticMesh*> m_meshes;
|
||||
std::vector<Texture*> m_textures;
|
||||
std::vector<Texture*> m_normal_textures;
|
||||
std::vector<BoneInfo> m_bone_info;
|
||||
std::unordered_map<std::string, uint> m_bone_name_to_index_map;
|
||||
std::unordered_map<std::string, uint> m_animation_map;
|
||||
|
|
|
@ -71,7 +71,7 @@ Mat4 Quaternion::ToMat4() const
|
|||
Vec3 up(2.0f * (x * y + w * z), 1.0f - 2.0f * (x * x + z * z), 2.0f * (y * z - w * x));
|
||||
Vec3 right(1.0f - 2.0f * (y * y + z * z), 2.0f * (x * y - w * z), 2.0f * (x * z + w * y));
|
||||
|
||||
return Mat4().InitRotation(forward, up, right);
|
||||
return Mat4().InitRotation(forward, up, -right);
|
||||
}
|
||||
|
||||
Quaternion& Quaternion::operator*=(const Quaternion& rhs)
|
||||
|
|
|
@ -222,17 +222,15 @@ void Renderer3D::DrawMesh(StaticMesh& mesh, const Mat4& m, bool bind_shader, uin
|
|||
glEnableVertexAttribArray(0);
|
||||
glEnableVertexAttribArray(1);
|
||||
glEnableVertexAttribArray(2);
|
||||
glEnableVertexAttribArray(3);
|
||||
glEnableVertexAttribArray(4);
|
||||
glEnableVertexAttribArray(5);
|
||||
if (skinned)
|
||||
{
|
||||
glEnableVertexAttribArray(5);
|
||||
glEnableVertexAttribArray(6);
|
||||
}
|
||||
|
||||
glVertexAttribPointer(
|
||||
0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex3D), reinterpret_cast<GLvoid*>(offsetof(Vertex3D, position))
|
||||
);
|
||||
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex3D), reinterpret_cast<GLvoid*>(offsetof(Vertex3D, position)));
|
||||
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex3D), reinterpret_cast<GLvoid*>(offsetof(Vertex3D, normal)));
|
||||
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex3D), reinterpret_cast<GLvoid*>(offsetof(Vertex3D, uv)));
|
||||
glVertexAttribPointer(3, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex3D), reinterpret_cast<GLvoid*>(offsetof(Vertex3D, atangent)));
|
||||
|
@ -378,10 +376,13 @@ void Renderer3D::DrawModel(Model& model, const Mat4& m)
|
|||
if (!mesh)
|
||||
continue;
|
||||
|
||||
r3d_state->shader->Bind();
|
||||
|
||||
for (int i = 0; i < transforms.size(); i++)
|
||||
{
|
||||
if (i >= MAX_BONES)
|
||||
continue;
|
||||
|
||||
std::string u = "u_bones[" + std::to_string(i) + "]";
|
||||
glUniformMatrix4fv(
|
||||
glGetUniformLocation(r3d_state->shader->GetGLID(), u.c_str()), 1, GL_FALSE, transforms[i].mat.data()
|
||||
|
@ -389,7 +390,7 @@ void Renderer3D::DrawModel(Model& model, const Mat4& m)
|
|||
}
|
||||
if (mesh->skinnable)
|
||||
r3d_state->shader->SetUniform("u_has_bones", 1);
|
||||
DrawMesh(*mesh, m);
|
||||
DrawMesh(*mesh, m, false);
|
||||
if (mesh->skinnable)
|
||||
r3d_state->shader->SetUniform("u_has_bones", 0);
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ namespace kp3d::res {
|
|||
|
||||
std::unordered_map<std::string, std::shared_ptr<Material>> material_cache;
|
||||
std::unordered_map<std::string, std::shared_ptr<Texture>> texture_cache;
|
||||
std::unordered_map<std::string, std::shared_ptr<Model>> model_cache;
|
||||
|
||||
void LoadMaterials()
|
||||
{
|
||||
|
@ -93,4 +94,28 @@ void LoadTextures()
|
|||
}
|
||||
}
|
||||
|
||||
void LoadModels()
|
||||
{
|
||||
// Load every available texture
|
||||
for (const auto& entry: std::filesystem::recursive_directory_iterator(sys::GetModelDir()))
|
||||
{
|
||||
if (entry.is_directory())
|
||||
continue;
|
||||
|
||||
std::filesystem::path entry_path = entry.path();
|
||||
std::string path_str = entry_path.string();
|
||||
|
||||
if (!str::EndsWith(path_str, ".fbx") && !str::EndsWith(path_str, ".obj"))
|
||||
continue;
|
||||
|
||||
std::string filename = std::filesystem::proximate(path_str, sys::GetModelDir()).string();
|
||||
std::replace(filename.begin(), filename.end(), '\\', '/');
|
||||
|
||||
KP3D_LOG_INFO("Loading model resource: {}", filename);
|
||||
|
||||
model_cache.emplace(filename, std::make_shared<Model>());
|
||||
model_cache[filename]->Load(filename);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace kp3d::res
|
||||
|
|
|
@ -7,13 +7,16 @@
|
|||
#include "KP3D_Common.h"
|
||||
#include "KP3D_Texture.h"
|
||||
#include "KP3D_Material.h"
|
||||
#include "KP3D_Model.h"
|
||||
|
||||
namespace kp3d::res {
|
||||
|
||||
extern std::unordered_map<std::string, std::shared_ptr<Material>> material_cache;
|
||||
extern std::unordered_map<std::string, std::shared_ptr<Texture>> texture_cache;
|
||||
extern std::unordered_map<std::string, std::shared_ptr<Model>> model_cache;
|
||||
|
||||
void LoadMaterials();
|
||||
void LoadTextures();
|
||||
void LoadModels();
|
||||
|
||||
} // namespace kp3d::res
|
||||
|
|
|
@ -16,7 +16,7 @@ RawTexture::RawTexture():
|
|||
|
||||
RawTexture::RawTexture(const std::string& path)
|
||||
{
|
||||
std::string tex_path = sys::GetTextureDir() + path;
|
||||
std::string tex_path = path[0] == '$' ? path.substr(1) : sys::GetTextureDir() + path;
|
||||
|
||||
data = stbi_load(tex_path.c_str(), &width, &height, NULL, STBI_rgb_alpha);
|
||||
|
||||
|
|
|
@ -19,6 +19,9 @@ Sandbox::Sandbox(const std::string& path):
|
|||
kp3d::res::LoadMaterials();
|
||||
kp3d::res::LoadTextures();
|
||||
|
||||
seal.noflip = true;
|
||||
seal.Load("seal/seal.dae");
|
||||
|
||||
tex.Load("logo.png");
|
||||
crosshair.Load(".kp3d/crosshair.png");
|
||||
projection.InitPerspective(70.0f, (float) GetWidth() / (float) GetHeight());
|
||||
|
@ -97,6 +100,14 @@ void Sandbox::Update()
|
|||
//if (IsKeyDown(kp3d::KEY_F)) camera.Rotate(kp3d::Camera::AXIS_Y, -qerf_speed);
|
||||
ResetMouseCursor([&](float x, float y) { camera.UpdateMouseLook({x, y}); });
|
||||
camera.UpdateMatrix();
|
||||
|
||||
seal.SetAnimation(0);
|
||||
if (IsKeyDown(kp3d::KEY_L))
|
||||
{
|
||||
seal.StartAnimation();
|
||||
KeyReset(kp3d::KEY_L);
|
||||
}
|
||||
seal.UpdateAnimation();
|
||||
}
|
||||
|
||||
void Sandbox::Render()
|
||||
|
@ -112,6 +123,10 @@ void Sandbox::Render()
|
|||
if (m_mode == MODE_EDIT)
|
||||
editor.RenderMap();
|
||||
kp3d::Renderer3D::DrawBillboard(tex, {}, { 1, 1 });
|
||||
kp3d::Transform trans{ {-2.0f, 0.0f, -2.0f}, {kp3d::ToRadians(-90), 0, 0}, kp3d::Vec3(0.1f)};
|
||||
kp3d::Renderer3D::PushShader(kp3d::Renderer3D::GetMapShader());
|
||||
kp3d::Renderer3D::DrawModel(seal, trans);
|
||||
kp3d::Renderer3D::PopShader();
|
||||
kp3d::Renderer3D::End();
|
||||
|
||||
// 2D scene
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include <KP3D_Math.h>
|
||||
#include <KP3D_Camera.h>
|
||||
#include <KP3D_Map.h>
|
||||
#include <KP3D_Model.h>
|
||||
|
||||
#include "Editor.h"
|
||||
|
||||
|
@ -35,6 +36,8 @@ public:
|
|||
kp3d::Texture crosshair;
|
||||
kp3d::Mat4 projection;
|
||||
|
||||
kp3d::Model seal;
|
||||
|
||||
private:
|
||||
// KP3D essentials
|
||||
int m_mode;
|
||||
|
|
Loading…
Reference in a new issue