Konata animation test
This commit is contained in:
parent
9010b5e821
commit
89a7084a1f
14 changed files with 1373 additions and 870 deletions
BIN
Data/resources/models/konata/8e5eedd8.png
Normal file
BIN
Data/resources/models/konata/8e5eedd8.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 42 KiB |
BIN
Data/resources/models/konata/994ecdee.png
Normal file
BIN
Data/resources/models/konata/994ecdee.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
BIN
Data/resources/models/konata/Konata.fbx
Normal file
BIN
Data/resources/models/konata/Konata.fbx
Normal file
Binary file not shown.
1173
Data/resources/models/konata/Konata_PistolAnimations.dae
Normal file
1173
Data/resources/models/konata/Konata_PistolAnimations.dae
Normal file
File diff suppressed because one or more lines are too long
BIN
Data/resources/models/konata/Konata_PistolAnimations.fbx
Normal file
BIN
Data/resources/models/konata/Konata_PistolAnimations.fbx
Normal file
Binary file not shown.
BIN
Data/resources/models/konata/b93e90b3.png
Normal file
BIN
Data/resources/models/konata/b93e90b3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 47 KiB |
|
@ -19,7 +19,7 @@ out vec3 v_bitangent;
|
|||
|
||||
out float v_id;
|
||||
|
||||
const int MAX_BONES = 48;
|
||||
const int MAX_BONES = 96;
|
||||
uniform mat4 u_bones[MAX_BONES];
|
||||
uniform int u_has_bones;
|
||||
|
||||
|
|
|
@ -1,742 +1,111 @@
|
|||
[04:00:32 AM] Info: Starting...
|
||||
[04:12:58 PM] Info: Starting...
|
||||
|
||||
KP3D version 2
|
||||
===============================
|
||||
Copyright (C) kpworld.xyz 2018-2024
|
||||
Contact me! @kp_cftsz
|
||||
|
||||
[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
|
||||
[04:12:58 PM] Info: Initializing SDL
|
||||
[04:12:58 PM] Info: Initializing OpenGL
|
||||
[04:12:58 PM] Info: OpenGL version: 4.6.0 NVIDIA 536.23
|
||||
[04:12:58 PM] Info: Initializing GLEW
|
||||
[04:12:58 PM] Info: Initializing SDL_mixer
|
||||
[04:12:58 PM] Info: Reticulating splines...
|
||||
[04:12:59 PM] Info: Ready!
|
||||
[04:12:59 PM] Info: Loading script: build-cylinder.scm
|
||||
[04:12:59 PM] Info: Loading script: build-stairs.scm
|
||||
[04:12:59 PM] Info: Loading material resource: block.png
|
||||
[04:12:59 PM] Info: Found normal map texture: materials/block_n.png
|
||||
[04:12:59 PM] Info: Loading material resource: brick2.jpg
|
||||
[04:12:59 PM] Info: Found normal map texture: materials/brick2_n.jpg
|
||||
[04:12:59 PM] Info: Loading material resource: bricks.jpg
|
||||
[04:12:59 PM] Info: Found normal map texture: materials/bricks_n.jpg
|
||||
[04:12:59 PM] Info: Loading material resource: FLAT5_7.png
|
||||
[04:12:59 PM] Info: Found normal map texture: materials/FLAT5_7_n.png
|
||||
[04:12:59 PM] Info: Loading material resource: floor0.png
|
||||
[04:12:59 PM] Info: Found normal map texture: materials/floor0_n.png
|
||||
[04:12:59 PM] Info: Loading material resource: floor1.png
|
||||
[04:12:59 PM] Info: Found normal map texture: materials/floor1_n.png
|
||||
[04:12:59 PM] Info: Loading material resource: GRASS2.png
|
||||
[04:12:59 PM] Info: Found normal map texture: materials/GRASS2_n.png
|
||||
[04:12:59 PM] Info: Loading material resource: hardwood.jpg
|
||||
[04:12:59 PM] Info: Found normal map texture: materials/hardwood_n.jpg
|
||||
[04:12:59 PM] Info: Loading texture resource: .kp3d/banner.png
|
||||
[04:12:59 PM] Info: Loading texture resource: .kp3d/crosshair.png
|
||||
[04:12:59 PM] Info: Loading texture resource: .kp3d/empty.png
|
||||
[04:12:59 PM] Info: Loading texture resource: .kp3d/logo.png
|
||||
[04:12:59 PM] Info: Loading texture resource: .kp3d/map_grid.png
|
||||
[04:12:59 PM] Info: Loading texture resource: .kp3d/not_found.png
|
||||
[04:12:59 PM] Info: Loading texture resource: .kp3d/skybox.png
|
||||
[04:12:59 PM] Info: Loading texture resource: .kp3d/uv_test.png
|
||||
[04:12:59 PM] Info: Loading texture resource: .kp3d/water.png
|
||||
[04:12:59 PM] Info: Loading texture resource: dot.png
|
||||
[04:12:59 PM] Info: Loading texture resource: editor/stem.png
|
||||
[04:12:59 PM] Info: Loading texture resource: logo.png
|
||||
[04:12:59 PM] Info: Loading texture resource: skyboxes/sky50e2dd1d496fc.jpg
|
||||
[04:12:59 PM] Info: Loading texture resource: skyboxes/sky8.jpg
|
||||
[04:12:59 PM] Info: Loading texture resource: skyboxes/sky9.jpg
|
||||
[04:12:59 PM] Info: Loading texture resource: skyboxes/skybox.jpg
|
||||
[04:12:59 PM] Info: Loading texture resource: skyboxes/skybox_11.jpg
|
||||
[04:12:59 PM] Info: Loading texture resource: skyboxes/skybox_14.jpg
|
||||
[04:12:59 PM] Info: Loading texture resource: skyboxes/skybox_15.jpg
|
||||
[04:12:59 PM] Info: Loading texture resource: skyboxes/skybox_3.jpg
|
||||
[04:12:59 PM] Info: Loading texture resource: skybox_16.jpg
|
||||
[04:12:59 PM] Info: # of bones for model konata/Konata_PistolAnimations.dae: 23
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Pelvis: 432
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Spine: 279
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Spine1: 350
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Spine2: 515
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Spine4: 132
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Neck1: 25
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Head1: 6
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_R_Clavicle: 219
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_R_UpperArm: 226
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_R_Forearm: 342
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_R_Hand: 254
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_L_Clavicle: 172
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_L_UpperArm: 208
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_L_Forearm: 333
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_L_Hand: 248
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_R_Thigh: 475
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_R_Calf: 382
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_R_Foot: 319
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_R_Toe0: 159
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_L_Thigh: 490
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_L_Calf: 359
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_L_Foot: 304
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_L_Toe0: 154
|
||||
[04:12:59 PM] Info: # of bones for model konata/Konata_PistolAnimations.dae: 7
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Spine: 312
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Spine1: 168
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Spine2: 164
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Spine4: 154
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Neck1: 408
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Head1: 3912
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_R_Clavicle: 14
|
||||
[04:12:59 PM] Info: # of bones for model konata/Konata_PistolAnimations.dae: 8
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Spine2: 30
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Spine4: 26
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Neck1: 123
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_Head1: 1027
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_R_Clavicle: 87
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_R_UpperArm: 5
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_L_Clavicle: 64
|
||||
[04:12:59 PM] Info: Num weights for Konatap_ARM_ValveBiped_Bip01_L_UpperArm: 3
|
||||
[04:12:59 PM] Info: Map init
|
||||
[04:12:59 PM] Info: Finalized mesh with 49 batches
|
||||
[04:13:05 PM] Info: Starting animation
|
||||
[04:13:14 PM] Info: Starting animation
|
||||
[04:13:19 PM] Info: Starting animation
|
||||
[04:13:26 PM] Info: Starting animation
|
||||
[04:13:27 PM] Info: Starting animation
|
||||
[04:13:30 PM] Info: Starting animation
|
||||
[04:13:30 PM] Info: Starting animation
|
||||
[04:13:31 PM] Info: Starting animation
|
||||
[04:13:31 PM] Info: Starting animation
|
||||
[04:13:31 PM] Info: Starting animation
|
||||
[04:13:32 PM] Info: Starting animation
|
||||
[04:13:32 PM] Info: Starting animation
|
||||
[04:13:32 PM] Info: Starting animation
|
||||
[04:13:33 PM] Info: Starting animation
|
||||
[04:13:34 PM] Info: Starting animation
|
||||
|
|
|
@ -1,28 +1,30 @@
|
|||
#include "KP3D_Model.h"
|
||||
|
||||
#include <filesystem>
|
||||
|
||||
#include <assimp/postprocess.h>
|
||||
|
||||
#include "KP3D_EventBus.h"
|
||||
#include "KP3D_SystemUtils.h"
|
||||
#include "KP3D_Log.h"
|
||||
#include "KP3D_Time.h"
|
||||
#include "KP3D_Renderer2D.h"
|
||||
|
||||
namespace {
|
||||
|
||||
#define TRANSPOSE_AI 0
|
||||
|
||||
using namespace kp3d;
|
||||
Mat4 aimattokp3dmat(const aiMatrix4x4& in)
|
||||
kp3d::Mat4 ConvertAssimpMatrix(const aiMatrix4x4& in)
|
||||
{
|
||||
Mat4 val;
|
||||
kp3d::Mat4 mat;
|
||||
for (int i = 0; i < 4; i++)
|
||||
for (int j = 0; j < 4; j++)
|
||||
#if TRANSPOSE_AI
|
||||
val.mat[i + j * 4] = in[j][i];
|
||||
#else
|
||||
val.mat[i + j * 4] = in[i][j];
|
||||
mat.mat[i + j * 4] = in[i][j];
|
||||
#endif
|
||||
return val;
|
||||
return mat;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
@ -54,47 +56,7 @@ Model::~Model()
|
|||
|
||||
ErrCode Model::Load(const std::string& path, const std::string& main_texture_path)
|
||||
{
|
||||
return LoadModel(
|
||||
path,
|
||||
main_texture_path,
|
||||
[&]()
|
||||
{
|
||||
if (!main_texture_path.empty())
|
||||
{
|
||||
m_textures.push_back(new Texture());
|
||||
m_textures.back()->Load(main_texture_path);
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
ErrCode Model::LoadCached(
|
||||
const std::string& path,
|
||||
const std::string& main_texture_path,
|
||||
std::vector<RawTexture*>& raw_texture_data,
|
||||
TextureCache& texture_cache
|
||||
)
|
||||
{
|
||||
Model* self = this;
|
||||
|
||||
return LoadModel(
|
||||
path,
|
||||
main_texture_path,
|
||||
[&]()
|
||||
{
|
||||
KP3D_LOG_ERROR("Model::LoadCached() disabled");
|
||||
// TODO: Re-enable me!
|
||||
// raw_texture_data.push_back(new RawTexture(main_texture_path));
|
||||
// TextureLoadEvent* event = new TextureLoadEvent(main_texture_path, raw_texture_data.size() - 1);
|
||||
// event->dependent_model = self;
|
||||
// EventBus::GetInstance().PublishDeferred(event);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
void Model::AddTexture(Texture* texture)
|
||||
{
|
||||
m_textures.push_back(texture);
|
||||
return LoadModel(path);
|
||||
}
|
||||
|
||||
std::string Model::GetPath() const
|
||||
|
@ -189,7 +151,7 @@ void Model::ParseSingleBone(MeshDef& def, const aiBone* bone)
|
|||
|
||||
if (bone_id == m_bone_info.size())
|
||||
{
|
||||
Mat4 offset = aimattokp3dmat(bone->mOffsetMatrix);
|
||||
Mat4 offset = ConvertAssimpMatrix(bone->mOffsetMatrix);
|
||||
BoneInfo bi(offset);
|
||||
m_bone_info.push_back(bi);
|
||||
}
|
||||
|
@ -229,11 +191,14 @@ void Model::GetBoneTransforms(float seconds, std::vector<Mat4>& transforms)
|
|||
if (!m_has_bones)
|
||||
return;
|
||||
|
||||
const aiAnimation* animation = m_scene->mAnimations[m_animation_index];
|
||||
|
||||
float ticks_per_second = (float) (animation->mTicksPerSecond != 0 ? animation->mTicksPerSecond : 25.0f);
|
||||
float time_in_ticks = seconds * ticks_per_second;
|
||||
float animation_time_ticks = fmod(time_in_ticks, (float) animation->mDuration);
|
||||
float animation_time_ticks = 0.0f;
|
||||
if (m_scene->HasAnimations())
|
||||
{
|
||||
const aiAnimation* animation = m_scene->mAnimations[m_animation_index];
|
||||
float ticks_per_second = (float)(animation->mTicksPerSecond != 0 ? animation->mTicksPerSecond : 25.0f);
|
||||
float time_in_ticks = seconds * ticks_per_second;
|
||||
animation_time_ticks = fmod(time_in_ticks, (float)animation->mDuration);
|
||||
}
|
||||
|
||||
Mat4 identity;
|
||||
identity.InitIdentity();
|
||||
|
@ -251,41 +216,44 @@ void Model::ReadNodeHierarchy(float ticks, const aiNode* node, const Mat4& paren
|
|||
return;
|
||||
|
||||
std::string node_name(node->mName.data);
|
||||
Mat4 node_transformation = aimattokp3dmat(node->mTransformation);
|
||||
Mat4 node_transformation = ConvertAssimpMatrix(node->mTransformation);
|
||||
|
||||
const aiAnimation* animation = m_scene->mAnimations[m_animation_index];
|
||||
const aiNodeAnim* node_anim = FindNodeAnim(animation, node_name);
|
||||
if (node_anim)
|
||||
if (m_scene->HasAnimations())
|
||||
{
|
||||
// Interpolate scaling and generate transformation matrix
|
||||
aiVector3D scaling;
|
||||
CalcInterpScaling(scaling, ticks, node_anim);
|
||||
Mat4 scaling_m;
|
||||
scaling_m.InitScale({scaling.x, scaling.y, scaling.z});
|
||||
const aiAnimation* animation = m_scene->mAnimations[m_animation_index];
|
||||
const aiNodeAnim* node_anim = FindNodeAnim(animation, node_name);
|
||||
if (node_anim)
|
||||
{
|
||||
// Interpolate scaling and generate transformation matrix
|
||||
aiVector3D scaling;
|
||||
CalcInterpScaling(scaling, ticks, node_anim);
|
||||
Mat4 scaling_m;
|
||||
scaling_m.InitScale({ scaling.x, scaling.y, scaling.z });
|
||||
|
||||
// Same with rotation....
|
||||
aiQuaternion rotation_q;
|
||||
CalcInterpRotation(rotation_q, ticks, node_anim);
|
||||
Mat4 rotation_m;
|
||||
rotation_m.InitIdentity();
|
||||
Quaternion qt(rotation_q.x, rotation_q.y, rotation_q.z, rotation_q.w);
|
||||
rotation_m = qt.ToMat4();
|
||||
// Same with rotation....
|
||||
aiQuaternion rotation_q;
|
||||
CalcInterpRotation(rotation_q, ticks, node_anim);
|
||||
Mat4 rotation_m;
|
||||
rotation_m.InitIdentity();
|
||||
Quaternion qt(rotation_q.x, rotation_q.y, rotation_q.z, rotation_q.w);
|
||||
rotation_m = qt.ToMat4();
|
||||
|
||||
// And translation.
|
||||
aiVector3D translation;
|
||||
CalcInterpPosition(translation, ticks, node_anim);
|
||||
Mat4 translation_m;
|
||||
translation_m.InitTranslation({translation.x, translation.y, translation.z});
|
||||
// And translation.
|
||||
aiVector3D translation;
|
||||
CalcInterpPosition(translation, ticks, node_anim);
|
||||
Mat4 translation_m;
|
||||
translation_m.InitTranslation({ translation.x, translation.y, translation.z });
|
||||
|
||||
// Combine the above transformations for a complete transformation matrix
|
||||
node_transformation = translation_m * rotation_m * scaling_m;
|
||||
// Combine the above transformations for a complete transformation matrix
|
||||
node_transformation = translation_m * rotation_m * scaling_m;
|
||||
}
|
||||
}
|
||||
|
||||
Mat4 global_transformation = parent_transform * node_transformation;
|
||||
|
||||
if (m_bone_name_to_index_map.count(node_name))
|
||||
{
|
||||
Mat4 git = aimattokp3dmat(m_global_inverse_transform);
|
||||
Mat4 git = ConvertAssimpMatrix(m_global_inverse_transform);
|
||||
|
||||
uint bone_idx = m_bone_name_to_index_map[node_name];
|
||||
m_bone_info[bone_idx].final_transformation = git * global_transformation * m_bone_info[bone_idx].offset_matrix;
|
||||
|
@ -414,31 +382,17 @@ const aiNodeAnim* Model::FindNodeAnim(const aiAnimation* animation, const std::s
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
ErrCode Model::LoadModel(const std::string& path, const std::string& main_texture_path, std::function<void(void)> load_textures)
|
||||
ErrCode Model::LoadModel(const std::string& path)
|
||||
{
|
||||
std::string kp3d_path = sys::GetModelDir() + path;
|
||||
|
||||
m_path = path;
|
||||
|
||||
// Quick reset
|
||||
m_meshes.clear();
|
||||
m_textures.clear();
|
||||
m_vertices = 0;
|
||||
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();
|
||||
|
||||
// TODO: Retarded busy-waiting, fix whenever I restructure this
|
||||
//
|
||||
// Another consideration: Do we even need to do this if it's using the texture cache? I mean we can do this busy-waiting as a
|
||||
// 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));
|
||||
|
||||
std::string parent_dir = kp3d_path.substr(0, kp3d_path.find_last_of("/\\"));
|
||||
|
||||
m_scene = m_importer.ReadFile(
|
||||
|
@ -452,17 +406,12 @@ 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();
|
||||
|
||||
// exit(1);
|
||||
|
||||
// TODO: Go through the scene's material information and try to grab diffuse, AO, normal map, etc. textures...
|
||||
|
||||
if (m_scene->HasAnimations())
|
||||
{
|
||||
for (size_t i = 0; i < m_scene->mNumAnimations; i++)
|
||||
{
|
||||
std::string name(m_scene->mAnimations[i]->mName.C_Str());
|
||||
m_animation_map.emplace(name, i);
|
||||
KP3D_LOG_INFO("FOUND ANIMATION: {}, {}", name, i);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -502,6 +451,7 @@ ErrCode Model::LoadModel(const std::string& path, const std::string& main_textur
|
|||
|
||||
if (model->HasBones())
|
||||
{
|
||||
KP3D_LOG_INFO("# of bones for model {}: {}", m_path, model->mNumBones);
|
||||
m_has_bones = true;
|
||||
def.bones.resize(def.vertices.size());
|
||||
ParseBones(def, model);
|
||||
|
@ -511,30 +461,33 @@ ErrCode Model::LoadModel(const std::string& path, const std::string& main_textur
|
|||
def.base_index = m_faces * 3;
|
||||
|
||||
Texture* tex = nullptr,* normal_tex = nullptr;
|
||||
const Texture* default_tex = &Renderer2D::GetDefaultTexture();
|
||||
if (m_scene->HasMaterials())
|
||||
{
|
||||
aiString path;
|
||||
if (!m_scene->mMaterials[model->mMaterialIndex]->GetTexture(aiTextureType_DIFFUSE, 0, &path))
|
||||
{
|
||||
std::string tex_path(path.C_Str());
|
||||
tex_path = std::filesystem::path(tex_path).filename().string();
|
||||
tex = new Texture();
|
||||
tex->Load("$" + parent_dir + "/" + path.C_Str(), false, Texture::FILTER_LINEAR);
|
||||
tex->Load("$" + parent_dir + "/" + tex_path, 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))
|
||||
{
|
||||
std::string tex_path(path.C_Str());
|
||||
tex_path = std::filesystem::path(tex_path).filename().string();
|
||||
normal_tex = new Texture();
|
||||
normal_tex->Load("$" + parent_dir + "/" + path.C_Str(), false, Texture::FILTER_LINEAR);
|
||||
normal_tex->Load("$" + parent_dir + "/" + tex_path, 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(tex, def.vertices, def.indices, def.bones, false, normal_tex);
|
||||
m->AddSkinnedBatch(tex ? tex : default_tex, def.vertices, def.indices, def.bones, false, normal_tex);
|
||||
else
|
||||
m->AddIndexedBatch(tex, def.vertices, def.indices, normal_tex);
|
||||
m->AddIndexedBatch(tex ? tex : default_tex, def.vertices, def.indices, normal_tex);
|
||||
|
||||
m->Finalize();
|
||||
m_meshes.push_back(m);
|
||||
|
|
|
@ -23,15 +23,6 @@ public:
|
|||
~Model();
|
||||
|
||||
ErrCode Load(const std::string& path, const std::string& main_texture_path = "");
|
||||
// TODO: Remove this, realized I don't really need it
|
||||
ErrCode LoadCached(
|
||||
const std::string& path,
|
||||
const std::string& main_texture_path,
|
||||
std::vector<RawTexture*>& raw_texture_data,
|
||||
TextureCache& texture_cache
|
||||
);
|
||||
|
||||
void AddTexture(Texture* texture);
|
||||
|
||||
std::string GetPath() const;
|
||||
|
||||
|
@ -70,7 +61,7 @@ private:
|
|||
void CalcInterpRotation(aiQuaternion& out, float ticks, const aiNodeAnim* node_anim);
|
||||
void CalcInterpScaling(aiVector3D& out, float ticks, const aiNodeAnim* node_anim);
|
||||
const aiNodeAnim* FindNodeAnim(const aiAnimation* animation, const std::string& node_name);
|
||||
ErrCode LoadModel(const std::string& path, const std::string& main_texture_path, std::function<void(void)> load_textures);
|
||||
ErrCode LoadModel(const std::string& path);
|
||||
|
||||
private:
|
||||
Texture* m_main_texture;
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#include "KP3D_Texture.h"
|
||||
|
||||
#define MAX_NUM_BONES_PER_VERTEX 4
|
||||
#define MAX_BONES 48
|
||||
#define MAX_BONES 96
|
||||
|
||||
namespace kp3d {
|
||||
|
||||
|
|
|
@ -238,9 +238,9 @@ void Editor::Update()
|
|||
|
||||
#define KEY_SHORTCUT(key, action) if (sandbox->IsKeyDown(kp3d::KEY_##key)) { action; sandbox->KeyReset(kp3d::KEY_##key); }
|
||||
|
||||
KEY_SHORTCUT(SPACE, m_mode = MODE_NORMAL);
|
||||
KEY_SHORTCUT(V, m_mode = MODE_BUILD);
|
||||
KEY_SHORTCUT(T, m_mode = MODE_THINGS);
|
||||
KEY_SHORTCUT(SPACE, SetMode(MODE_NORMAL));
|
||||
KEY_SHORTCUT(V, SetMode(MODE_BUILD));
|
||||
KEY_SHORTCUT(T, SetMode(MODE_THINGS));
|
||||
KEY_SHORTCUT(Z, {
|
||||
if (sandbox->IsKeyDown(kp3d::KEY_LCTRL))
|
||||
Undo();
|
||||
|
@ -252,6 +252,7 @@ void Editor::Update()
|
|||
KEY_SHORTCUT(F1, sandbox->map.render_wireframe ^= 1);
|
||||
KEY_SHORTCUT(F2, show_grid ^= 1);
|
||||
KEY_SHORTCUT(TAB, show_selection_info ^= 1);
|
||||
KEY_SHORTCUT(Q, Deselect());
|
||||
|
||||
switch (m_mode)
|
||||
{
|
||||
|
@ -308,6 +309,20 @@ void Editor::RebuildMap()
|
|||
m_build_time = kp3d::CurrentTimeInMilliseconds().count() - start;
|
||||
}
|
||||
|
||||
void Editor::SetMode(EditMode mode)
|
||||
{
|
||||
Deselect();
|
||||
m_mode = mode;
|
||||
}
|
||||
|
||||
void Editor::Deselect()
|
||||
{
|
||||
kp3d::editor_hovered_batch.clear();
|
||||
m_selected_thing = nullptr;
|
||||
points.clear();
|
||||
build_has_start_pos = false;
|
||||
}
|
||||
|
||||
void Editor::UpdateModeBuild()
|
||||
{
|
||||
if (sandbox->IsMouseButtonDown(kp3d::MOUSE_BUTTON_LEFT) && !build_show_options)
|
||||
|
@ -993,18 +1008,15 @@ void Editor::RenderModeThings()
|
|||
nullptr
|
||||
);
|
||||
editing_gizmo = ImGuizmo::IsOver();
|
||||
// if (v)
|
||||
{
|
||||
float translation[3], rotation[3], scale[3];
|
||||
ImGuizmo::DecomposeMatrixToComponents(tmp, translation, rotation, scale);
|
||||
m_selected_thing->transform.translation = {translation[0], translation[1], translation[2]};
|
||||
m_selected_thing->transform.rotation = {
|
||||
kp3d::ToRadians(rotation[0]),
|
||||
kp3d::ToRadians(rotation[1]),
|
||||
kp3d::ToRadians(rotation[2])
|
||||
};
|
||||
m_selected_thing->transform.scale = {scale[0], scale[1], scale[2]};
|
||||
}
|
||||
float translation[3], rotation[3], scale[3];
|
||||
ImGuizmo::DecomposeMatrixToComponents(tmp, translation, rotation, scale);
|
||||
m_selected_thing->transform.translation = {translation[0], translation[1], translation[2]};
|
||||
m_selected_thing->transform.rotation = {
|
||||
kp3d::ToRadians(rotation[0]),
|
||||
kp3d::ToRadians(rotation[1]),
|
||||
kp3d::ToRadians(rotation[2])
|
||||
};
|
||||
m_selected_thing->transform.scale = {scale[0], scale[1], scale[2]};
|
||||
}
|
||||
|
||||
void Editor::RenderUI()
|
||||
|
@ -1030,9 +1042,11 @@ void Editor::RenderUI()
|
|||
}
|
||||
if (ImGui::BeginMenu("Mode"))
|
||||
{
|
||||
if (ImGui::MenuItem("Normal Mode", "Space", m_mode == MODE_NORMAL)) m_mode = MODE_NORMAL;
|
||||
if (ImGui::MenuItem("Build Mode", "V", m_mode == MODE_BUILD)) m_mode = MODE_BUILD;
|
||||
if (ImGui::MenuItem("Things Mode", "T", m_mode == MODE_THINGS)) m_mode = MODE_THINGS;
|
||||
if (ImGui::MenuItem("Normal Mode", "Space", m_mode == MODE_NORMAL)) SetMode(MODE_NORMAL);
|
||||
if (ImGui::MenuItem("Build Mode", "V", m_mode == MODE_BUILD)) SetMode(MODE_BUILD);
|
||||
if (ImGui::MenuItem("Things Mode", "T", m_mode == MODE_THINGS)) SetMode(MODE_THINGS);
|
||||
ImGui::Separator();
|
||||
if (ImGui::MenuItem("Clear Selection", "Q")) Deselect();
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
if (ImGui::BeginMenu("View"))
|
||||
|
|
|
@ -43,6 +43,9 @@ public:
|
|||
void RenderStem(kp3d::Vec3 position);
|
||||
void RebuildMap();
|
||||
|
||||
void SetMode(EditMode mode);
|
||||
void Deselect();
|
||||
|
||||
void UpdateModeBuild();
|
||||
void RenderModeBuild();
|
||||
void UpdateModeNormal();
|
||||
|
|
|
@ -20,7 +20,7 @@ Sandbox::Sandbox(const std::string& path):
|
|||
kp3d::res::LoadTextures();
|
||||
|
||||
seal.noflip = true;
|
||||
seal.Load("seal/seal.dae");
|
||||
seal.Load("konata/Konata_PistolAnimations.dae");
|
||||
|
||||
tex.Load("logo.png");
|
||||
crosshair.Load(".kp3d/crosshair.png");
|
||||
|
@ -123,7 +123,7 @@ 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::Transform trans{ {0.0f, 0.0f, 0}, {kp3d::ToRadians(-90), 0, 0}, kp3d::Vec3(1.0f)};
|
||||
kp3d::Renderer3D::PushShader(kp3d::Renderer3D::GetMapShader());
|
||||
kp3d::Renderer3D::DrawModel(seal, trans);
|
||||
kp3d::Renderer3D::PopShader();
|
||||
|
|
Loading…
Reference in a new issue