Working on fog, 2nd level, locations, dialogs
This commit is contained in:
parent
eac914e073
commit
c7b3f04cd4
160
resources/config2/gameobjects2.json
Normal file
160
resources/config2/gameobjects2.json
Normal file
@ -0,0 +1,160 @@
|
||||
{
|
||||
"objects": [
|
||||
{
|
||||
"name": "door",
|
||||
"texturePath": "resources/w/exterior/door002.png",
|
||||
"meshPath": "resources/w/exterior/door002.txt",
|
||||
"rotationX": 0.0,
|
||||
"rotationY": 0.0,
|
||||
"rotationZ": 0.0,
|
||||
"positionX": 0.0,
|
||||
"positionY": 0.0,
|
||||
"positionZ": 0.0,
|
||||
"scale": 1.0,
|
||||
"interactive": false
|
||||
},
|
||||
{
|
||||
"name": "inai",
|
||||
"texturePath": "resources/w/exterior/Main_Building.png",
|
||||
"meshPath": "resources/w/exterior/Main_Building.txt",
|
||||
"rotationX": 0.0,
|
||||
"rotationY": 0.0,
|
||||
"rotationZ": 0.0,
|
||||
"positionX": 0.0,
|
||||
"positionY": 0.0,
|
||||
"positionZ": 0.0,
|
||||
"scale": 1.0,
|
||||
"interactive": false
|
||||
},
|
||||
{
|
||||
"name": "tree001",
|
||||
"texturePath": "resources/w/exterior/tree001.png",
|
||||
"meshPath": "resources/w/exterior/tree002.txt",
|
||||
"rotationX": 0.0,
|
||||
"rotationY": -1.5707963267948966,
|
||||
"rotationZ": 0.0,
|
||||
"positionX": 10.0,
|
||||
"positionY": 0.0,
|
||||
"positionZ": 12.0,
|
||||
"scale": 1.0,
|
||||
"interactive": false
|
||||
},
|
||||
{
|
||||
"name": "tree002",
|
||||
"texturePath": "resources/w/exterior/tree001.png",
|
||||
"meshPath": "resources/w/exterior/tree002.txt",
|
||||
"rotationX": 0.0,
|
||||
"rotationY": 1.5707963267948966,
|
||||
"rotationZ": 0.0,
|
||||
"positionX": -12,
|
||||
"positionY": 0.0,
|
||||
"positionZ": 19.0,
|
||||
"scale": 1.0,
|
||||
"interactive": false
|
||||
},
|
||||
{
|
||||
"name": "tree003",
|
||||
"texturePath": "resources/w/exterior/tree001.png",
|
||||
"meshPath": "resources/w/exterior/tree002.txt",
|
||||
"rotationX": 0.0,
|
||||
"rotationY": 0.0,
|
||||
"rotationZ": 0.0,
|
||||
"positionX": -12.0,
|
||||
"positionY": 0.0,
|
||||
"positionZ": 8.0,
|
||||
"scale": 1.0,
|
||||
"interactive": false
|
||||
},
|
||||
{
|
||||
"name": "tree004",
|
||||
"texturePath": "resources/w/exterior/tree001.png",
|
||||
"meshPath": "resources/w/exterior/tree002.txt",
|
||||
"rotationX": 0.0,
|
||||
"rotationY": -1.5707963267948966,
|
||||
"rotationZ": 0.0,
|
||||
"positionX": -12.0,
|
||||
"positionY": 0.0,
|
||||
"positionZ": 0.0,
|
||||
"scale": 1.0,
|
||||
"interactive": false
|
||||
},
|
||||
{
|
||||
"name": "tree005",
|
||||
"texturePath": "resources/w/exterior/tree001.png",
|
||||
"meshPath": "resources/w/exterior/tree002.txt",
|
||||
"rotationX": 0.0,
|
||||
"rotationY": 1.5707963267948966,
|
||||
"rotationZ": 0.0,
|
||||
"positionX": -12.0,
|
||||
"positionY": 0.0,
|
||||
"positionZ": -8.0,
|
||||
"scale": 1.0,
|
||||
"interactive": false
|
||||
},
|
||||
{
|
||||
"name": "tree006",
|
||||
"texturePath": "resources/w/exterior/tree001.png",
|
||||
"meshPath": "resources/w/exterior/tree002.txt",
|
||||
"rotationX": 0.0,
|
||||
"rotationY": 0.0,
|
||||
"rotationZ": 0.0,
|
||||
"positionX": 8.49915,
|
||||
"positionY": 0.0,
|
||||
"positionZ": -2.59884,
|
||||
"scale": 1.0,
|
||||
"interactive": false
|
||||
},
|
||||
{
|
||||
"name": "tree007",
|
||||
"texturePath": "resources/w/exterior/tree001.png",
|
||||
"meshPath": "resources/w/exterior/tree002.txt",
|
||||
"rotationX": 0.0,
|
||||
"rotationY": -1.5707963267948966,
|
||||
"rotationZ": 0.0,
|
||||
"positionX": 14.5936,
|
||||
"positionY": 0.0,
|
||||
"positionZ": 5.3401,
|
||||
"scale": 1.0,
|
||||
"interactive": false
|
||||
},
|
||||
{
|
||||
"name": "tree008",
|
||||
"texturePath": "resources/w/exterior/tree001.png",
|
||||
"meshPath": "resources/w/exterior/tree002.txt",
|
||||
"rotationX": 0.0,
|
||||
"rotationY": 1.5707963267948966,
|
||||
"rotationZ": 0.0,
|
||||
"positionX": 23.9295,
|
||||
"positionY": 0.0,
|
||||
"positionZ": 9.00583,
|
||||
"scale": 1.0,
|
||||
"interactive": false
|
||||
},
|
||||
{
|
||||
"name": "tree009",
|
||||
"texturePath": "resources/w/exterior/tree001.png",
|
||||
"meshPath": "resources/w/exterior/tree002.txt",
|
||||
"rotationX": 0.0,
|
||||
"rotationY": 0.0,
|
||||
"rotationZ": 0.0,
|
||||
"positionX": 29.8128,
|
||||
"positionY": 0.0,
|
||||
"positionZ": -1.45278,
|
||||
"scale": 1.0,
|
||||
"interactive": false
|
||||
},
|
||||
{
|
||||
"name": "tree010",
|
||||
"texturePath": "resources/w/exterior/tree001.png",
|
||||
"meshPath": "resources/w/exterior/tree002.txt",
|
||||
"rotationX": 0.0,
|
||||
"rotationY": -1.5707963267948966,
|
||||
"rotationZ": 0.0,
|
||||
"positionX": 33.1771,
|
||||
"positionY": 0.0,
|
||||
"positionZ": 14.609,
|
||||
"scale": 1.0,
|
||||
"interactive": false
|
||||
}
|
||||
]
|
||||
}
|
||||
18
resources/config2/navigation2.json
Normal file
18
resources/config2/navigation2.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"cellSize": 0.4,
|
||||
"agentRadius": 0.45,
|
||||
"floorY": 0.0,
|
||||
"objectPadding": 0.25,
|
||||
"areas": [
|
||||
{
|
||||
"name": "main_corridor",
|
||||
"available": true,
|
||||
"polygon": [
|
||||
[-200, 200],
|
||||
[200, 200],
|
||||
[200, -200],
|
||||
[-200, -200]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1,103 +1,19 @@
|
||||
{
|
||||
"npcs": [
|
||||
{
|
||||
"id": "npc_01_default",
|
||||
"name": "Студент",
|
||||
"animationIdlePath": "resources/w/jam/man_stand_idle002.anim",
|
||||
"animationWalkPath": "resources/w/jam/man_walk002.anim",
|
||||
"meshTextures": {
|
||||
"Body": "resources/w/jam/male_packed0_diffuse.png",
|
||||
"Bottoms": "resources/w/jam/male_packed1_diffuse.png",
|
||||
"Eyelashes": "resources/w/jam/male_packed0_diffuse.png",
|
||||
"Eyes": "resources/w/jam/male_packed0_diffuse.png",
|
||||
"Eyewear": "resources/w/jam/male_packed0_diffuse.png",
|
||||
"Gloves": "resources/w/jam/male_packed1_diffuse.png",
|
||||
"Hair": "resources/w/jam/male_packed0_diffuse.png",
|
||||
"Shoes": "resources/w/jam/male_packed1_diffuse.png",
|
||||
"Tops": "resources/w/jam/male_packed2_diffuse.png"
|
||||
},
|
||||
"positionX": 0.0,
|
||||
"positionY": 0.0,
|
||||
"positionZ": -10.0,
|
||||
"walkSpeed": 1.5,
|
||||
"rotationSpeed": 8.0,
|
||||
"modelScale": 0.0001,
|
||||
"modelCorrectionRotX": 0.0,
|
||||
"modelCorrectionRotY": 180.0,
|
||||
"modelCorrectionRotZ": 0.0,
|
||||
"interactionRadius": 2.0,
|
||||
"gift": {
|
||||
"id": "guard_token",
|
||||
"name": "Guard's Token",
|
||||
"description": "A token from the Guard - sign of respect",
|
||||
"icon": "resources/w/red.png"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "npc_02_woman",
|
||||
"name": "Студентка",
|
||||
"animationIdlePath": "resources/w/jam/woman_idle002.anim",
|
||||
"animationWalkPath": "resources/w/jam/woman_walk002.anim",
|
||||
"meshTextures": {
|
||||
"Body": "resources/w/jam/female_packed0_diffuse.png",
|
||||
"Bottoms": "resources/w/jam/female_packed3_diffuse.png",
|
||||
"Eyelashes": "resources/w/jam/female_packed0_diffuse.png",
|
||||
"Eyes": "resources/w/jam/female_packed0_diffuse.png",
|
||||
"Hair": "resources/w/jam/female_packed2_diffuse.png",
|
||||
"Shoes": "resources/w/jam/female_packed1_diffuse.png",
|
||||
"Tops": "resources/w/jam/female_packed2_diffuse.png"
|
||||
},
|
||||
"positionX": 2.0,
|
||||
"positionY": 0.0,
|
||||
"positionZ": -15.0,
|
||||
"walkSpeed": 1.5,
|
||||
"rotationSpeed": 8.0,
|
||||
"modelScale": 0.0001,
|
||||
"modelCorrectionRotX": 0.0,
|
||||
"modelCorrectionRotY": 180.0,
|
||||
"modelCorrectionRotZ": 0.0,
|
||||
"interactionRadius": 2.0
|
||||
},
|
||||
{
|
||||
"id": "npc_03_salesman",
|
||||
"name": "Мухтар Байке",
|
||||
"animationIdlePath": "resources/w/jam/salesperson_stand_idle003.anim",
|
||||
"animationWalkPath": "resources/w/jam/salesperson_walk001.anim",
|
||||
"meshTextures": {
|
||||
"Body": "resources/w/jam/Salesperson_packed0_diffuse.png",
|
||||
"Bottoms": "resources/w/jam/Salesperson_packed2_diffuse.png",
|
||||
"Eyelashes": "resources/w/jam/Salesperson_packed0_diffuse.png",
|
||||
"Eyes": "resources/w/jam/Salesperson_packed0_diffuse.png",
|
||||
"Hats": "resources/w/jam/Salesperson_packed1_diffuse.png",
|
||||
"Mustashes": "resources/w/jam/Salesperson_packed1_diffuse.png",
|
||||
"Shoes": "resources/w/jam/Salesperson_packed1_diffuse.png",
|
||||
"Tops": "resources/w/jam/Salesperson_packed1_diffuse.png"
|
||||
},
|
||||
"positionX": 1.0,
|
||||
"positionY": 0.0,
|
||||
"positionZ": -7.0,
|
||||
"walkSpeed": 1.5,
|
||||
"rotationSpeed": 8.0,
|
||||
"modelScale": 0.001,
|
||||
"modelCorrectionRotX": 0.0,
|
||||
"modelCorrectionRotY": 180.0,
|
||||
"modelCorrectionRotZ": 0.0,
|
||||
"interactionRadius": 2.0
|
||||
},
|
||||
{
|
||||
"id": "npc_04_ghost",
|
||||
"name": "Добрый Призрак",
|
||||
"name": "Беспокойный Призрак",
|
||||
"texturePath": "resources/w/ghost_skin001.png",
|
||||
"animationIdlePath": "resources/w/default_float001.anim",
|
||||
"animationWalkPath": "resources/w/default_float001.anim",
|
||||
"positionX": 0.0,
|
||||
"positionY": 0.0,
|
||||
"positionZ": -5.0,
|
||||
"positionZ": -35.0,
|
||||
"walkSpeed": 1.5,
|
||||
"rotationSpeed": 8.0,
|
||||
"modelScale": 0.01,
|
||||
"modelCorrectionRotX": 0.0,
|
||||
"modelCorrectionRotY": 0.0,
|
||||
"modelCorrectionRotY": 180.0,
|
||||
"modelCorrectionRotZ": 0.0,
|
||||
"interactionRadius": 1.0,
|
||||
"gift": {
|
||||
|
||||
88
resources/config2/npcs2.json
Normal file
88
resources/config2/npcs2.json
Normal file
@ -0,0 +1,88 @@
|
||||
{
|
||||
"npcs": [
|
||||
{
|
||||
"id": "npc_01_default",
|
||||
"name": "Студент",
|
||||
"animationIdlePath": "resources/w/jam/man_stand_idle002.anim",
|
||||
"animationWalkPath": "resources/w/jam/man_walk002.anim",
|
||||
"meshTextures": {
|
||||
"Body": "resources/w/jam/male_packed0_diffuse.png",
|
||||
"Bottoms": "resources/w/jam/male_packed1_diffuse.png",
|
||||
"Eyelashes": "resources/w/jam/male_packed0_diffuse.png",
|
||||
"Eyes": "resources/w/jam/male_packed0_diffuse.png",
|
||||
"Eyewear": "resources/w/jam/male_packed0_diffuse.png",
|
||||
"Gloves": "resources/w/jam/male_packed1_diffuse.png",
|
||||
"Hair": "resources/w/jam/male_packed0_diffuse.png",
|
||||
"Shoes": "resources/w/jam/male_packed1_diffuse.png",
|
||||
"Tops": "resources/w/jam/male_packed2_diffuse.png"
|
||||
},
|
||||
"positionX": 2.95,
|
||||
"positionY": 0.0,
|
||||
"positionZ": 16.65,
|
||||
"walkSpeed": 1.5,
|
||||
"rotationSpeed": 8.0,
|
||||
"modelScale": 0.0001,
|
||||
"modelCorrectionRotX": 0.0,
|
||||
"modelCorrectionRotY": 180.0,
|
||||
"modelCorrectionRotZ": 0.0,
|
||||
"interactionRadius": 2.0,
|
||||
"gift": {
|
||||
"id": "guard_token",
|
||||
"name": "Guard's Token",
|
||||
"description": "A token from the Guard - sign of respect",
|
||||
"icon": "resources/w/red.png"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "npc_02_woman",
|
||||
"name": "Студентка",
|
||||
"animationIdlePath": "resources/w/jam/woman_idle002.anim",
|
||||
"animationWalkPath": "resources/w/jam/woman_walk002.anim",
|
||||
"meshTextures": {
|
||||
"Body": "resources/w/jam/female_packed0_diffuse.png",
|
||||
"Bottoms": "resources/w/jam/female_packed3_diffuse.png",
|
||||
"Eyelashes": "resources/w/jam/female_packed0_diffuse.png",
|
||||
"Eyes": "resources/w/jam/female_packed0_diffuse.png",
|
||||
"Hair": "resources/w/jam/female_packed2_diffuse.png",
|
||||
"Shoes": "resources/w/jam/female_packed1_diffuse.png",
|
||||
"Tops": "resources/w/jam/female_packed2_diffuse.png"
|
||||
},
|
||||
"positionX": 19.5,
|
||||
"positionY": 0.0,
|
||||
"positionZ": 32.0,
|
||||
"walkSpeed": 1.5,
|
||||
"rotationSpeed": 8.0,
|
||||
"modelScale": 0.0001,
|
||||
"modelCorrectionRotX": 0.0,
|
||||
"modelCorrectionRotY": 180.0,
|
||||
"modelCorrectionRotZ": 0.0,
|
||||
"interactionRadius": 2.0
|
||||
},
|
||||
{
|
||||
"id": "npc_03_salesman",
|
||||
"name": "Мухтар Байке",
|
||||
"animationIdlePath": "resources/w/jam/salesperson_stand_idle003.anim",
|
||||
"animationWalkPath": "resources/w/jam/salesperson_walk001.anim",
|
||||
"meshTextures": {
|
||||
"Body": "resources/w/jam/Salesperson_packed0_diffuse.png",
|
||||
"Bottoms": "resources/w/jam/Salesperson_packed2_diffuse.png",
|
||||
"Eyelashes": "resources/w/jam/Salesperson_packed0_diffuse.png",
|
||||
"Eyes": "resources/w/jam/Salesperson_packed0_diffuse.png",
|
||||
"Hats": "resources/w/jam/Salesperson_packed1_diffuse.png",
|
||||
"Mustashes": "resources/w/jam/Salesperson_packed1_diffuse.png",
|
||||
"Shoes": "resources/w/jam/Salesperson_packed1_diffuse.png",
|
||||
"Tops": "resources/w/jam/Salesperson_packed1_diffuse.png"
|
||||
},
|
||||
"positionX": -1.94774,
|
||||
"positionY": 0.0,
|
||||
"positionZ": 16.2712,
|
||||
"walkSpeed": 1.5,
|
||||
"rotationSpeed": 8.0,
|
||||
"modelScale": 0.001,
|
||||
"modelCorrectionRotX": 0.0,
|
||||
"modelCorrectionRotY": 180.0,
|
||||
"modelCorrectionRotZ": 0.0,
|
||||
"interactionRadius": 2.0
|
||||
}
|
||||
]
|
||||
}
|
||||
@ -1,6 +1,116 @@
|
||||
{
|
||||
"dialogues": [
|
||||
{
|
||||
"id": "dialog_student",
|
||||
"start": "line_1",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "line_1",
|
||||
"type": "Line",
|
||||
"speaker": "Студент",
|
||||
"portrait": "resources/w/avatar_unknown.png",
|
||||
"text": "В университете завелись призраки, мне страшно ходить на занятия.",
|
||||
"next": "line_2"
|
||||
},
|
||||
{
|
||||
"id": "line_2",
|
||||
"type": "Line",
|
||||
"speaker": "Hero",
|
||||
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||
"text": "Можешь рассказать подробнее?",
|
||||
"next": "line_3"
|
||||
},
|
||||
{
|
||||
"id": "line_3",
|
||||
"type": "Line",
|
||||
"speaker": "Студент",
|
||||
"portrait": "resources/w/avatar_unknown.png",
|
||||
"text": "Спроси у Мухтара байке, он все знает.",
|
||||
"next": "line_4"
|
||||
},
|
||||
{
|
||||
"id": "line_4",
|
||||
"type": "Line",
|
||||
"speaker": "Hero",
|
||||
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||
"text": "Хорошо.",
|
||||
"next": "end_1"
|
||||
},
|
||||
{
|
||||
"id": "end_1",
|
||||
"type": "End"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "dialog_mukhtar",
|
||||
"start": "line_1",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "line_1",
|
||||
"type": "Line",
|
||||
"speaker": "Мухтар байке",
|
||||
"portrait": "resources/w/avatar_unknown.png",
|
||||
"text": "Здравствуй, мы давно тебя ждем! Ты поможешь нам избавиться от призраков?",
|
||||
"next": "line_2"
|
||||
},
|
||||
{
|
||||
"id": "line_2",
|
||||
"type": "Line",
|
||||
"speaker": "Hero",
|
||||
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||
"text": "Где их найти?",
|
||||
"next": "line_3"
|
||||
},
|
||||
{
|
||||
"id": "line_3",
|
||||
"type": "Line",
|
||||
"speaker": "Мухтар байке",
|
||||
"portrait": "resources/w/avatar_unknown.png",
|
||||
"text": "Заходи в здание универа и поднимайся на второй этаж.",
|
||||
"next": "line_4"
|
||||
},
|
||||
{
|
||||
"id": "line_4",
|
||||
"type": "Line",
|
||||
"speaker": "Мухтар байке",
|
||||
"portrait": "resources/w/avatar_unknown.png",
|
||||
"text": "Ты их встретишь прямо там.",
|
||||
"next": "line_5"
|
||||
},
|
||||
{
|
||||
"id": "line_4",
|
||||
"type": "Line",
|
||||
"speaker": "Hero",
|
||||
"portrait": "resources/w/gg/gg2_s_podsvetkoy5.png",
|
||||
"text": "Хорошо, я скоро вернусь!",
|
||||
"next": "end_1"
|
||||
},
|
||||
{
|
||||
"id": "end_1",
|
||||
"type": "End"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "dialog_female_student",
|
||||
"start": "line_1",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "line_1",
|
||||
"type": "Line",
|
||||
"speaker": "Студентка",
|
||||
"portrait": "resources/w/avatar_unknown.png",
|
||||
"text": "С этими призраками совсем невозможно ходить на лекции!",
|
||||
"next": "end_1"
|
||||
},
|
||||
{
|
||||
"id": "end_1",
|
||||
"type": "End"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "test_line_dialogue",
|
||||
"start": "line_1",
|
||||
"nodes": [
|
||||
@ -43,15 +153,15 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "test_choice_dialogue",
|
||||
"id": "ghost_choice_dialogue",
|
||||
"start": "line_1",
|
||||
"nodes": [
|
||||
{
|
||||
"id": "line_1",
|
||||
"type": "Line",
|
||||
"speaker": "Merchant",
|
||||
"speaker": "Беспокойный Призрак",
|
||||
"portrait": "resources/ghost_avatar.png",
|
||||
"text": "What do you want?",
|
||||
"text": "Нечасто я вижу смертных, готовых разговаривать со мной.",
|
||||
"next": "choice_1"
|
||||
},
|
||||
{
|
||||
@ -64,13 +174,13 @@
|
||||
{
|
||||
"id": "main_1",
|
||||
"kind": "Main",
|
||||
"text": "Show me your goods.",
|
||||
"text": "Не мешай студентам учиться!",
|
||||
"next": "line_goods"
|
||||
},
|
||||
{
|
||||
"id": "optional_1",
|
||||
"kind": "Optional",
|
||||
"text": "Who are you?",
|
||||
"text": "Почему ты появился здесь?",
|
||||
"next": "line_who"
|
||||
}
|
||||
]
|
||||
@ -78,17 +188,17 @@
|
||||
{
|
||||
"id": "line_goods",
|
||||
"type": "Line",
|
||||
"speaker": "Merchant",
|
||||
"speaker": "Беспокойный Призрак",
|
||||
"portrait": "resources/ghost_avatar.png",
|
||||
"text": "Take a look.",
|
||||
"text": "Это моя месть студентам за то что они призвали меня.",
|
||||
"next": "end_1"
|
||||
},
|
||||
{
|
||||
"id": "line_who",
|
||||
"type": "Line",
|
||||
"speaker": "Merchant",
|
||||
"speaker": "Беспокойный Призрак",
|
||||
"portrait": "resources/ghost_avatar.png",
|
||||
"text": "Just a trader passing through.",
|
||||
"text": "Группа студентов совершила ритуал и призвала меня сюда. Пока проклятие не спадет, я всегда буду здесь обитать.",
|
||||
"next": "choice_1"
|
||||
},
|
||||
{
|
||||
|
||||
16
resources/shaders/fog.vertex
Normal file
16
resources/shaders/fog.vertex
Normal file
@ -0,0 +1,16 @@
|
||||
attribute vec3 vPosition;
|
||||
attribute vec2 vTexCoord;
|
||||
varying vec2 texCoord;
|
||||
varying float fogDistance;
|
||||
|
||||
uniform mat4 ProjectionModelViewMatrix;
|
||||
uniform mat4 ModelViewMatrix;
|
||||
uniform vec3 uPlayerEyePos;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 eyePos = ModelViewMatrix * vec4(vPosition.xyz, 1.0);
|
||||
fogDistance = length(eyePos.xyz - uPlayerEyePos);
|
||||
gl_Position = ProjectionModelViewMatrix * vec4(vPosition.xyz, 1.0);
|
||||
texCoord = vTexCoord;
|
||||
}
|
||||
18
resources/shaders/fog_desktop.fragment
Normal file
18
resources/shaders/fog_desktop.fragment
Normal file
@ -0,0 +1,18 @@
|
||||
//precisionmediump float;
|
||||
uniform sampler2D Texture;
|
||||
varying vec2 texCoord;
|
||||
varying float fogDistance;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 color = texture2D(Texture,texCoord).rgba;
|
||||
|
||||
if(color.a < 0.1)
|
||||
discard;
|
||||
|
||||
vec3 fogColor = vec3(0.53, 0.81, 0.92);
|
||||
float fogFactor = clamp((fogDistance - 30.0) / 10.0, 0.0, 1.0);
|
||||
vec3 finalColor = mix(color.rgb, fogColor, fogFactor);
|
||||
|
||||
gl_FragColor = vec4(finalColor, color.a);
|
||||
}
|
||||
23
resources/shaders/fog_shadow.vertex
Normal file
23
resources/shaders/fog_shadow.vertex
Normal file
@ -0,0 +1,23 @@
|
||||
attribute vec3 vPosition;
|
||||
attribute vec2 vTexCoord;
|
||||
attribute vec3 vNormal;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec4 fragPosLightSpace;
|
||||
varying vec3 fragNormal;
|
||||
varying float fogDistance;
|
||||
|
||||
uniform mat4 ProjectionModelViewMatrix;
|
||||
uniform mat4 ModelViewMatrix;
|
||||
uniform mat4 uLightFromCamera;
|
||||
uniform vec3 uPlayerEyePos;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 eyePos = ModelViewMatrix * vec4(vPosition, 1.0);
|
||||
fogDistance = length(eyePos.xyz - uPlayerEyePos);
|
||||
gl_Position = ProjectionModelViewMatrix * vec4(vPosition, 1.0);
|
||||
texCoord = vTexCoord;
|
||||
fragPosLightSpace = uLightFromCamera * eyePos;
|
||||
fragNormal = mat3(ModelViewMatrix) * vNormal;
|
||||
}
|
||||
78
resources/shaders/fog_shadow_desktop.fragment
Normal file
78
resources/shaders/fog_shadow_desktop.fragment
Normal file
@ -0,0 +1,78 @@
|
||||
uniform sampler2D Texture;
|
||||
uniform sampler2D uShadowMap;
|
||||
uniform vec3 uLightDir;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec4 fragPosLightSpace;
|
||||
varying vec3 fragNormal;
|
||||
varying float fogDistance;
|
||||
|
||||
float computeShadow(vec4 lightSpacePos, vec3 normal)
|
||||
{
|
||||
vec3 projCoords = lightSpacePos.xyz / lightSpacePos.w;
|
||||
projCoords = projCoords * 0.5 + 0.5;
|
||||
|
||||
if (projCoords.x < 0.0 || projCoords.x > 1.0 ||
|
||||
projCoords.y < 0.0 || projCoords.y > 1.0 ||
|
||||
projCoords.z > 1.0)
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float currentDepth = projCoords.z;
|
||||
|
||||
// Slope-dependent bias: large for grazing angles, tiny for surfaces facing the light
|
||||
float bias = 0.0004;
|
||||
if (dot(normal, normal) > 0.001)
|
||||
{
|
||||
float cosTheta = dot(normalize(normal), -normalize(uLightDir));
|
||||
bias = max(0.002 * (1.0 - cosTheta), 0.0002);
|
||||
}
|
||||
|
||||
// 3x3 PCF (percentage-closer filtering) for softer shadows
|
||||
float shadow = 0.0;
|
||||
float texelSize = 1.0 / 2048.0;
|
||||
for (int x = -1; x <= 1; x++)
|
||||
{
|
||||
for (int y = -1; y <= 1; y++)
|
||||
{
|
||||
float pcfDepth = texture2D(uShadowMap, projCoords.xy + vec2(float(x), float(y)) * texelSize).r;
|
||||
shadow += currentDepth - bias > pcfDepth ? 1.0 : 0.0;
|
||||
}
|
||||
}
|
||||
shadow /= 9.0;
|
||||
|
||||
return shadow;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 color = texture2D(Texture, texCoord);
|
||||
|
||||
if (color.a < 0.1)
|
||||
discard;
|
||||
|
||||
float ambient = 0.4;
|
||||
float diffuseStrength = 0.6;
|
||||
|
||||
// Compute diffuse term; if normals are missing (zero-length) treat as fully lit
|
||||
float diffuse = 1.0;
|
||||
vec3 n = fragNormal;
|
||||
if (dot(n, n) > 0.001)
|
||||
{
|
||||
n = normalize(n);
|
||||
diffuse = max(dot(n, -normalize(uLightDir)), 0.0);
|
||||
}
|
||||
|
||||
float shadow = computeShadow(fragPosLightSpace, fragNormal);
|
||||
|
||||
// Shadow dims only the diffuse contribution; ambient is always present
|
||||
float lighting = ambient + diffuseStrength * diffuse * (1.0 - shadow);
|
||||
color.rgb *= lighting;
|
||||
|
||||
vec3 fogColor = vec3(0.53, 0.81, 0.92);
|
||||
float fogFactor = clamp((fogDistance - 30.0) / 10.0, 0.0, 1.0);
|
||||
color.rgb = mix(color.rgb, fogColor, fogFactor);
|
||||
|
||||
gl_FragColor = color;
|
||||
}
|
||||
76
resources/shaders/fog_shadow_web.fragment
Normal file
76
resources/shaders/fog_shadow_web.fragment
Normal file
@ -0,0 +1,76 @@
|
||||
precision mediump float;
|
||||
|
||||
uniform sampler2D Texture;
|
||||
uniform sampler2D uShadowMap;
|
||||
uniform vec3 uLightDir;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec4 fragPosLightSpace;
|
||||
varying vec3 fragNormal;
|
||||
varying float fogDistance;
|
||||
|
||||
float computeShadow(vec4 lightSpacePos, vec3 normal)
|
||||
{
|
||||
vec3 projCoords = lightSpacePos.xyz / lightSpacePos.w;
|
||||
projCoords = projCoords * 0.5 + 0.5;
|
||||
|
||||
if (projCoords.x < 0.0 || projCoords.x > 1.0 ||
|
||||
projCoords.y < 0.0 || projCoords.y > 1.0 ||
|
||||
projCoords.z > 1.0)
|
||||
{
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
float currentDepth = projCoords.z;
|
||||
|
||||
float bias = 0.0004;
|
||||
if (dot(normal, normal) > 0.001)
|
||||
{
|
||||
float cosTheta = dot(normalize(normal), -normalize(uLightDir));
|
||||
bias = max(0.002 * (1.0 - cosTheta), 0.0002);
|
||||
}
|
||||
|
||||
float shadow = 0.0;
|
||||
float texelSize = 1.0 / 2048.0;
|
||||
for (int x = -1; x <= 1; x++)
|
||||
{
|
||||
for (int y = -1; y <= 1; y++)
|
||||
{
|
||||
float pcfDepth = texture2D(uShadowMap, projCoords.xy + vec2(float(x), float(y)) * texelSize).r;
|
||||
shadow += currentDepth - bias > pcfDepth ? 1.0 : 0.0;
|
||||
}
|
||||
}
|
||||
shadow /= 9.0;
|
||||
|
||||
return shadow;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 color = texture2D(Texture, texCoord);
|
||||
|
||||
if (color.a < 0.1)
|
||||
discard;
|
||||
|
||||
float ambient = 0.4;
|
||||
float diffuseStrength = 0.6;
|
||||
|
||||
float diffuse = 1.0;
|
||||
vec3 n = fragNormal;
|
||||
if (dot(n, n) > 0.001)
|
||||
{
|
||||
n = normalize(n);
|
||||
diffuse = max(dot(n, -normalize(uLightDir)), 0.0);
|
||||
}
|
||||
|
||||
float shadow = computeShadow(fragPosLightSpace, fragNormal);
|
||||
|
||||
float lighting = ambient + diffuseStrength * diffuse * (1.0 - shadow);
|
||||
color.rgb *= lighting;
|
||||
|
||||
vec3 fogColor = vec3(0.53, 0.81, 0.92);
|
||||
float fogFactor = clamp((fogDistance - 30.0) / 10.0, 0.0, 1.0);
|
||||
color.rgb = mix(color.rgb, fogColor, fogFactor);
|
||||
|
||||
gl_FragColor = color;
|
||||
}
|
||||
55
resources/shaders/fog_skinning.vertex
Normal file
55
resources/shaders/fog_skinning.vertex
Normal file
@ -0,0 +1,55 @@
|
||||
attribute vec3 vPosition;
|
||||
attribute vec2 vTexCoord;
|
||||
attribute vec4 aBoneIndices0;
|
||||
attribute vec2 aBoneIndices1;
|
||||
attribute vec4 aBoneWeights0;
|
||||
attribute vec2 aBoneWeights1;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying float fogDistance;
|
||||
|
||||
uniform mat4 ProjectionModelViewMatrix;
|
||||
uniform mat4 ModelViewMatrix;
|
||||
uniform mat4 uBoneMatrices[64];
|
||||
uniform vec3 uPlayerEyePos;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 skinnedPos = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec4 originalPos = vec4(vPosition, 1.0);
|
||||
float totalWeight = 0.0;
|
||||
|
||||
if (aBoneWeights0.x > 0.0) {
|
||||
skinnedPos += uBoneMatrices[int(aBoneIndices0.x)] * originalPos * aBoneWeights0.x;
|
||||
totalWeight += aBoneWeights0.x;
|
||||
}
|
||||
if (aBoneWeights0.y > 0.0) {
|
||||
skinnedPos += uBoneMatrices[int(aBoneIndices0.y)] * originalPos * aBoneWeights0.y;
|
||||
totalWeight += aBoneWeights0.y;
|
||||
}
|
||||
if (aBoneWeights0.z > 0.0) {
|
||||
skinnedPos += uBoneMatrices[int(aBoneIndices0.z)] * originalPos * aBoneWeights0.z;
|
||||
totalWeight += aBoneWeights0.z;
|
||||
}
|
||||
if (aBoneWeights0.w > 0.0) {
|
||||
skinnedPos += uBoneMatrices[int(aBoneIndices0.w)] * originalPos * aBoneWeights0.w;
|
||||
totalWeight += aBoneWeights0.w;
|
||||
}
|
||||
if (aBoneWeights1.x > 0.0) {
|
||||
skinnedPos += uBoneMatrices[int(aBoneIndices1.x)] * originalPos * aBoneWeights1.x;
|
||||
totalWeight += aBoneWeights1.x;
|
||||
}
|
||||
if (aBoneWeights1.y > 0.0) {
|
||||
skinnedPos += uBoneMatrices[int(aBoneIndices1.y)] * originalPos * aBoneWeights1.y;
|
||||
totalWeight += aBoneWeights1.y;
|
||||
}
|
||||
|
||||
if (totalWeight < 0.001) {
|
||||
skinnedPos = originalPos;
|
||||
}
|
||||
|
||||
vec4 eyePos = ModelViewMatrix * skinnedPos;
|
||||
fogDistance = length(eyePos.xyz - uPlayerEyePos);
|
||||
gl_Position = ProjectionModelViewMatrix * skinnedPos;
|
||||
texCoord = vTexCoord;
|
||||
}
|
||||
69
resources/shaders/fog_skinning_shadow.vertex
Normal file
69
resources/shaders/fog_skinning_shadow.vertex
Normal file
@ -0,0 +1,69 @@
|
||||
attribute vec3 vPosition;
|
||||
attribute vec2 vTexCoord;
|
||||
attribute vec3 vNormal;
|
||||
attribute vec4 aBoneIndices0;
|
||||
attribute vec2 aBoneIndices1;
|
||||
attribute vec4 aBoneWeights0;
|
||||
attribute vec2 aBoneWeights1;
|
||||
|
||||
varying vec2 texCoord;
|
||||
varying vec4 fragPosLightSpace;
|
||||
varying vec3 fragNormal;
|
||||
varying float fogDistance;
|
||||
|
||||
uniform mat4 ProjectionModelViewMatrix;
|
||||
uniform mat4 ModelViewMatrix;
|
||||
uniform mat4 uLightFromCamera;
|
||||
uniform mat4 uBoneMatrices[64];
|
||||
uniform vec3 uPlayerEyePos;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 skinnedPos = vec4(0.0, 0.0, 0.0, 0.0);
|
||||
vec3 skinnedNormal = vec3(0.0, 0.0, 0.0);
|
||||
vec4 originalPos = vec4(vPosition, 1.0);
|
||||
float totalWeight = 0.0;
|
||||
|
||||
if (aBoneWeights0.x > 0.0) {
|
||||
skinnedPos += uBoneMatrices[int(aBoneIndices0.x)] * originalPos * aBoneWeights0.x;
|
||||
skinnedNormal += mat3(uBoneMatrices[int(aBoneIndices0.x)]) * vNormal * aBoneWeights0.x;
|
||||
totalWeight += aBoneWeights0.x;
|
||||
}
|
||||
if (aBoneWeights0.y > 0.0) {
|
||||
skinnedPos += uBoneMatrices[int(aBoneIndices0.y)] * originalPos * aBoneWeights0.y;
|
||||
skinnedNormal += mat3(uBoneMatrices[int(aBoneIndices0.y)]) * vNormal * aBoneWeights0.y;
|
||||
totalWeight += aBoneWeights0.y;
|
||||
}
|
||||
if (aBoneWeights0.z > 0.0) {
|
||||
skinnedPos += uBoneMatrices[int(aBoneIndices0.z)] * originalPos * aBoneWeights0.z;
|
||||
skinnedNormal += mat3(uBoneMatrices[int(aBoneIndices0.z)]) * vNormal * aBoneWeights0.z;
|
||||
totalWeight += aBoneWeights0.z;
|
||||
}
|
||||
if (aBoneWeights0.w > 0.0) {
|
||||
skinnedPos += uBoneMatrices[int(aBoneIndices0.w)] * originalPos * aBoneWeights0.w;
|
||||
skinnedNormal += mat3(uBoneMatrices[int(aBoneIndices0.w)]) * vNormal * aBoneWeights0.w;
|
||||
totalWeight += aBoneWeights0.w;
|
||||
}
|
||||
if (aBoneWeights1.x > 0.0) {
|
||||
skinnedPos += uBoneMatrices[int(aBoneIndices1.x)] * originalPos * aBoneWeights1.x;
|
||||
skinnedNormal += mat3(uBoneMatrices[int(aBoneIndices1.x)]) * vNormal * aBoneWeights1.x;
|
||||
totalWeight += aBoneWeights1.x;
|
||||
}
|
||||
if (aBoneWeights1.y > 0.0) {
|
||||
skinnedPos += uBoneMatrices[int(aBoneIndices1.y)] * originalPos * aBoneWeights1.y;
|
||||
skinnedNormal += mat3(uBoneMatrices[int(aBoneIndices1.y)]) * vNormal * aBoneWeights1.y;
|
||||
totalWeight += aBoneWeights1.y;
|
||||
}
|
||||
|
||||
if (totalWeight < 0.001) {
|
||||
skinnedPos = originalPos;
|
||||
skinnedNormal = vNormal;
|
||||
}
|
||||
|
||||
vec4 eyePos = ModelViewMatrix * skinnedPos;
|
||||
fogDistance = length(eyePos.xyz - uPlayerEyePos);
|
||||
gl_Position = ProjectionModelViewMatrix * skinnedPos;
|
||||
texCoord = vTexCoord;
|
||||
fragPosLightSpace = uLightFromCamera * eyePos;
|
||||
fragNormal = mat3(ModelViewMatrix) * skinnedNormal;
|
||||
}
|
||||
18
resources/shaders/fog_web.fragment
Normal file
18
resources/shaders/fog_web.fragment
Normal file
@ -0,0 +1,18 @@
|
||||
precision mediump float;
|
||||
uniform sampler2D Texture;
|
||||
varying vec2 texCoord;
|
||||
varying float fogDistance;
|
||||
|
||||
void main()
|
||||
{
|
||||
vec4 color = texture2D(Texture,texCoord).rgba;
|
||||
|
||||
if(color.a < 0.1)
|
||||
discard;
|
||||
|
||||
vec3 fogColor = vec3(0.53, 0.81, 0.92);
|
||||
float fogFactor = clamp((fogDistance - 30.0) / 10.0, 0.0, 1.0);
|
||||
vec3 finalColor = mix(color.rgb, fogColor, fogFactor);
|
||||
|
||||
gl_FragColor = vec4(finalColor, color.a);
|
||||
}
|
||||
@ -15,7 +15,7 @@ function step1()
|
||||
game_api.npc_walk_to(0, 2.0, 0.0, -2.0, step2)
|
||||
end
|
||||
|
||||
step1()
|
||||
--step1()
|
||||
|
||||
local function step3x()
|
||||
game_api.npc_walk_to(2, 2.0, 0.0, -27.0, step1x)
|
||||
@ -29,7 +29,7 @@ function step1x()
|
||||
game_api.npc_walk_to(2, 2.0, 0.0, -16.0, step2x)
|
||||
end
|
||||
|
||||
step1x()
|
||||
--step1x()
|
||||
-- ============================================
|
||||
-- ITEM PICKUP HANDLER
|
||||
-- ============================================
|
||||
@ -46,11 +46,7 @@ end
|
||||
|
||||
function on_npc_interact(npc_index)
|
||||
print("[Lua] NPC interaction! Index: " .. tostring(npc_index))
|
||||
if npc_index == 1 then
|
||||
game_api.start_dialogue("test_line_dialogue")
|
||||
else
|
||||
game_api.receive_npc_gift(npc_index)
|
||||
end
|
||||
game_api.start_dialogue("ghost_choice_dialogue")
|
||||
end
|
||||
|
||||
print("Lua script loaded successfully!")
|
||||
56
resources/start2.lua
Normal file
56
resources/start2.lua
Normal file
@ -0,0 +1,56 @@
|
||||
-- ============================================
|
||||
-- NPC PATROL WAYPOINTS
|
||||
-- ============================================
|
||||
|
||||
|
||||
local function step2()
|
||||
game_api.npc_walk_to(1, 19.5, 0.0, 32, step1)
|
||||
end
|
||||
|
||||
function step1()
|
||||
game_api.npc_walk_to(1, -6.45, 0.0, 7.82, step2)
|
||||
end
|
||||
|
||||
step1()
|
||||
|
||||
local function step3x()
|
||||
game_api.npc_walk_to(2, 2.0, 0.0, -27.0, step1x)
|
||||
end
|
||||
|
||||
local function step2x()
|
||||
game_api.npc_walk_to(2, -1.0, 0.0, -12.0, step3x)
|
||||
end
|
||||
|
||||
function step1x()
|
||||
game_api.npc_walk_to(2, 2.0, 0.0, -16.0, step2x)
|
||||
end
|
||||
|
||||
--step1x()
|
||||
-- ============================================
|
||||
-- ITEM PICKUP HANDLER
|
||||
-- ============================================
|
||||
|
||||
function on_health_pickup()
|
||||
game_api.pickup_item("health_potion")
|
||||
print("[Lua] Health potion picked up!")
|
||||
|
||||
end
|
||||
|
||||
-- ============================================
|
||||
-- NPC INTERACTION HANDLER
|
||||
-- ============================================
|
||||
|
||||
function on_npc_interact(npc_index)
|
||||
print("[Lua] NPC interaction! Index: " .. tostring(npc_index))
|
||||
if npc_index == 0 then
|
||||
game_api.start_dialogue("dialog_student")
|
||||
end
|
||||
if npc_index == 1 then
|
||||
game_api.start_dialogue("dialog_female_student")
|
||||
end
|
||||
if npc_index == 2 then
|
||||
game_api.start_dialogue("dialog_mukhtar")
|
||||
end
|
||||
end
|
||||
|
||||
print("Lua script loaded successfully!")
|
||||
BIN
resources/w/avatar_unknown.png
(Stored with Git LFS)
Normal file
BIN
resources/w/avatar_unknown.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
resources/w/exterior/Main_Building.png
(Stored with Git LFS)
Normal file
BIN
resources/w/exterior/Main_Building.png
(Stored with Git LFS)
Normal file
Binary file not shown.
37
resources/w/exterior/Main_Building.txt
Normal file
37
resources/w/exterior/Main_Building.txt
Normal file
@ -0,0 +1,37 @@
|
||||
===Vertices (Split by UV/Normal): 22
|
||||
V 0: Pos(-15.0, -3.75, 0.0) Norm(-0.57735, -0.57735, -0.57735) UV(1.0, 0.208333)
|
||||
V 1: Pos(-15.0, -3.75, 7.0) Norm(-0.57735, -0.57735, 0.57735) UV(0.805556, 0.208333)
|
||||
V 2: Pos(-15.0, 3.75, 7.0) Norm(-0.57735, 0.57735, 0.57735) UV(0.805556, 0.0)
|
||||
V 3: Pos(-15.0, 3.75, 0.0) Norm(-0.57735, 0.57735, -0.57735) UV(1.0, 0.0)
|
||||
V 4: Pos(-15.0, 3.75, 0.0) Norm(-0.57735, 0.57735, -0.57735) UV(0.611111, 0.833333)
|
||||
V 5: Pos(-15.0, 3.75, 7.0) Norm(-0.57735, 0.57735, 0.57735) UV(0.416667, 0.833333)
|
||||
V 6: Pos(15.0, 3.75, 7.0) Norm(0.57735, 0.57735, 0.57735) UV(0.416667, -0.0)
|
||||
V 7: Pos(15.0, 3.75, 0.0) Norm(0.57735, 0.57735, -0.57735) UV(0.611111, -0.0)
|
||||
V 8: Pos(15.0, 3.75, 0.0) Norm(0.57735, 0.57735, -0.57735) UV(1.0, 0.416667)
|
||||
V 9: Pos(15.0, 3.75, 7.0) Norm(0.57735, 0.57735, 0.57735) UV(0.805556, 0.416667)
|
||||
V 10: Pos(15.0, -3.75, 7.0) Norm(0.57735, -0.57735, 0.57735) UV(0.805556, 0.208333)
|
||||
V 11: Pos(15.0, -3.75, 0.0) Norm(0.57735, -0.57735, -0.57735) UV(1.0, 0.208333)
|
||||
V 12: Pos(15.0, -3.75, 0.0) Norm(0.57735, -0.57735, -0.57735) UV(0.805556, 0.833333)
|
||||
V 13: Pos(15.0, -3.75, 7.0) Norm(0.57735, -0.57735, 0.57735) UV(0.611111, 0.833333)
|
||||
V 14: Pos(-15.0, -3.75, 7.0) Norm(-0.57735, -0.57735, 0.57735) UV(0.611111, -0.0)
|
||||
V 15: Pos(-15.0, -3.75, 0.0) Norm(-0.57735, -0.57735, -0.57735) UV(0.805556, 0.0)
|
||||
V 16: Pos(-15.0, 3.75, 0.0) Norm(-0.57735, 0.57735, -0.57735) UV(0.208333, 0.0)
|
||||
V 17: Pos(15.0, 3.75, 0.0) Norm(0.57735, 0.57735, -0.57735) UV(0.208333, 0.833333)
|
||||
V 18: Pos(15.0, -3.75, 0.0) Norm(0.57735, -0.57735, -0.57735) UV(0.0, 0.833333)
|
||||
V 19: Pos(-15.0, -3.75, 0.0) Norm(-0.57735, -0.57735, -0.57735) UV(0.0, 0.0)
|
||||
V 20: Pos(-15.0, -3.75, 7.0) Norm(-0.57735, -0.57735, 0.57735) UV(0.208333, 0.833333)
|
||||
V 21: Pos(15.0, -3.75, 7.0) Norm(0.57735, -0.57735, 0.57735) UV(0.208333, -0.0)
|
||||
|
||||
===Triangles (Indices): 12
|
||||
Tri: 0 1 2
|
||||
Tri: 0 2 3
|
||||
Tri: 4 5 6
|
||||
Tri: 4 6 7
|
||||
Tri: 8 9 10
|
||||
Tri: 8 10 11
|
||||
Tri: 12 13 14
|
||||
Tri: 12 14 15
|
||||
Tri: 16 17 18
|
||||
Tri: 16 18 19
|
||||
Tri: 6 5 20
|
||||
Tri: 6 20 21
|
||||
BIN
resources/w/exterior/Segmented_Plane — копия.png
(Stored with Git LFS)
Normal file
BIN
resources/w/exterior/Segmented_Plane — копия.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
resources/w/exterior/Segmented_Plane.png
(Stored with Git LFS)
Normal file
BIN
resources/w/exterior/Segmented_Plane.png
(Stored with Git LFS)
Normal file
Binary file not shown.
37
resources/w/exterior/Segmented_Plane.txt
Normal file
37
resources/w/exterior/Segmented_Plane.txt
Normal file
@ -0,0 +1,37 @@
|
||||
===Vertices (Split by UV/Normal): 16
|
||||
V 0: Pos(-33.333332, -100.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.333333, 0.0)
|
||||
V 1: Pos(-100.0, -33.333332, 0.0) Norm(0.0, 0.0, 1.0) UV(0.0, 0.333333)
|
||||
V 2: Pos(-100.0, -100.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.0, 0.0)
|
||||
V 3: Pos(33.333336, -100.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.666667, 0.0)
|
||||
V 4: Pos(-33.333332, -33.333332, 0.0) Norm(0.0, 0.0, 1.0) UV(0.333333, 0.333333)
|
||||
V 5: Pos(100.0, -100.0, 0.0) Norm(0.0, 0.0, 1.0) UV(1.0, 0.0)
|
||||
V 6: Pos(33.333336, -33.333332, 0.0) Norm(0.0, 0.0, 1.0) UV(0.666667, 0.333333)
|
||||
V 7: Pos(-100.0, 33.333336, 0.0) Norm(0.0, 0.0, 1.0) UV(0.0, 0.666667)
|
||||
V 8: Pos(-33.333332, 33.333336, 0.0) Norm(0.0, 0.0, 1.0) UV(0.333333, 0.666667)
|
||||
V 9: Pos(100.0, -33.333332, 0.0) Norm(0.0, 0.0, 1.0) UV(1.0, 0.333333)
|
||||
V 10: Pos(33.333336, 33.333336, 0.0) Norm(0.0, 0.0, 1.0) UV(0.666667, 0.666667)
|
||||
V 11: Pos(-100.0, 100.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.0, 1.0)
|
||||
V 12: Pos(-33.333332, 100.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.333333, 1.0)
|
||||
V 13: Pos(100.0, 33.333336, 0.0) Norm(0.0, 0.0, 1.0) UV(1.0, 0.666667)
|
||||
V 14: Pos(33.333336, 100.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.666667, 1.0)
|
||||
V 15: Pos(100.0, 100.0, 0.0) Norm(0.0, 0.0, 1.0) UV(1.0, 1.0)
|
||||
|
||||
===Triangles (Indices): 18
|
||||
Tri: 0 1 2
|
||||
Tri: 3 4 0
|
||||
Tri: 5 6 3
|
||||
Tri: 4 7 1
|
||||
Tri: 6 8 4
|
||||
Tri: 9 10 6
|
||||
Tri: 8 11 7
|
||||
Tri: 10 12 8
|
||||
Tri: 13 14 10
|
||||
Tri: 0 4 1
|
||||
Tri: 3 6 4
|
||||
Tri: 5 9 6
|
||||
Tri: 4 8 7
|
||||
Tri: 6 10 8
|
||||
Tri: 9 13 10
|
||||
Tri: 8 12 11
|
||||
Tri: 10 14 12
|
||||
Tri: 13 15 14
|
||||
BIN
resources/w/exterior/Segmented_Plane002.png
(Stored with Git LFS)
Normal file
BIN
resources/w/exterior/Segmented_Plane002.png
(Stored with Git LFS)
Normal file
Binary file not shown.
60
resources/w/exterior/Segmented_Plane002.txt
Normal file
60
resources/w/exterior/Segmented_Plane002.txt
Normal file
@ -0,0 +1,60 @@
|
||||
===Vertices (Split by UV/Normal): 25
|
||||
V 0: Pos(-75.0, -75.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.0, 0.0)
|
||||
V 1: Pos(-37.5, -75.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.25, 0.0)
|
||||
V 2: Pos(-37.5, -37.5, 0.0) Norm(0.0, 0.0, 1.0) UV(0.25, 0.25)
|
||||
V 3: Pos(-75.0, -37.5, 0.0) Norm(0.0, 0.0, 1.0) UV(0.0, 0.25)
|
||||
V 4: Pos(0.0, -75.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.5, 0.0)
|
||||
V 5: Pos(0.0, -37.5, 0.0) Norm(0.0, 0.0, 1.0) UV(0.5, 0.25)
|
||||
V 6: Pos(37.5, -75.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.75, 0.0)
|
||||
V 7: Pos(37.5, -37.5, 0.0) Norm(0.0, 0.0, 1.0) UV(0.75, 0.25)
|
||||
V 8: Pos(75.0, -75.0, 0.0) Norm(0.0, 0.0, 1.0) UV(1.0, 0.0)
|
||||
V 9: Pos(75.0, -37.5, 0.0) Norm(0.0, 0.0, 1.0) UV(1.0, 0.25)
|
||||
V 10: Pos(-37.5, 0.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.25, 0.5)
|
||||
V 11: Pos(-75.0, 0.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.0, 0.5)
|
||||
V 12: Pos(0.0, 0.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.5, 0.5)
|
||||
V 13: Pos(37.5, 0.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.75, 0.5)
|
||||
V 14: Pos(75.0, 0.0, 0.0) Norm(0.0, 0.0, 1.0) UV(1.0, 0.5)
|
||||
V 15: Pos(-37.5, 37.5, 0.0) Norm(0.0, 0.0, 1.0) UV(0.25, 0.75)
|
||||
V 16: Pos(-75.0, 37.5, 0.0) Norm(0.0, 0.0, 1.0) UV(0.0, 0.75)
|
||||
V 17: Pos(0.0, 37.5, 0.0) Norm(0.0, 0.0, 1.0) UV(0.5, 0.75)
|
||||
V 18: Pos(37.5, 37.5, 0.0) Norm(0.0, 0.0, 1.0) UV(0.75, 0.75)
|
||||
V 19: Pos(75.0, 37.5, 0.0) Norm(0.0, 0.0, 1.0) UV(1.0, 0.75)
|
||||
V 20: Pos(-37.5, 75.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.25, 1.0)
|
||||
V 21: Pos(-75.0, 75.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.0, 1.0)
|
||||
V 22: Pos(0.0, 75.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.5, 1.0)
|
||||
V 23: Pos(37.5, 75.0, 0.0) Norm(0.0, 0.0, 1.0) UV(0.75, 1.0)
|
||||
V 24: Pos(75.0, 75.0, 0.0) Norm(0.0, 0.0, 1.0) UV(1.0, 1.0)
|
||||
|
||||
===Triangles (Indices): 32
|
||||
Tri: 0 1 2
|
||||
Tri: 0 2 3
|
||||
Tri: 1 4 5
|
||||
Tri: 1 5 2
|
||||
Tri: 4 6 7
|
||||
Tri: 4 7 5
|
||||
Tri: 6 8 9
|
||||
Tri: 6 9 7
|
||||
Tri: 3 2 10
|
||||
Tri: 3 10 11
|
||||
Tri: 2 5 12
|
||||
Tri: 2 12 10
|
||||
Tri: 5 7 13
|
||||
Tri: 5 13 12
|
||||
Tri: 7 9 14
|
||||
Tri: 7 14 13
|
||||
Tri: 11 10 15
|
||||
Tri: 11 15 16
|
||||
Tri: 10 12 17
|
||||
Tri: 10 17 15
|
||||
Tri: 12 13 18
|
||||
Tri: 12 18 17
|
||||
Tri: 13 14 19
|
||||
Tri: 13 19 18
|
||||
Tri: 16 15 20
|
||||
Tri: 16 20 21
|
||||
Tri: 15 17 22
|
||||
Tri: 15 22 20
|
||||
Tri: 17 18 23
|
||||
Tri: 17 23 22
|
||||
Tri: 18 19 24
|
||||
Tri: 18 24 23
|
||||
BIN
resources/w/exterior/door002.png
(Stored with Git LFS)
Normal file
BIN
resources/w/exterior/door002.png
(Stored with Git LFS)
Normal file
Binary file not shown.
649
resources/w/exterior/door002.txt
Normal file
649
resources/w/exterior/door002.txt
Normal file
@ -0,0 +1,649 @@
|
||||
===Vertices (Split by UV/Normal): 352
|
||||
V 0: Pos(7.130006, -4.5, 0.0) Norm(-0.57735, -0.57735, -0.57735) UV(0.4629, 0.662837)
|
||||
V 1: Pos(7.130006, -4.5, 0.2) Norm(-0.57735, -0.57735, 0.57735) UV(0.422084, 0.662837)
|
||||
V 2: Pos(7.130006, -3.75, 0.2) Norm(-0.57735, 0.57735, 0.57735) UV(0.422084, 0.510204)
|
||||
V 3: Pos(7.130006, -3.75, 0.0) Norm(-0.57735, 0.57735, -0.57735) UV(0.4629, 0.510204)
|
||||
V 4: Pos(7.130006, -3.75, 0.0) Norm(-0.57735, 0.57735, -0.57735) UV(0.897273, 0.397884)
|
||||
V 5: Pos(7.130006, -3.75, 0.2) Norm(-0.57735, 0.57735, 0.57735) UV(0.856457, 0.397884)
|
||||
V 6: Pos(9.130006, -3.75, 0.2) Norm(0.57735, 0.57735, 0.57735) UV(0.856457, -0.0)
|
||||
V 7: Pos(9.130006, -3.75, 0.0) Norm(0.57735, 0.57735, -0.57735) UV(0.897273, -0.0)
|
||||
V 8: Pos(9.130006, -3.75, 0.0) Norm(0.57735, 0.57735, -0.57735) UV(0.503716, 0.65941)
|
||||
V 9: Pos(9.130006, -3.75, 0.2) Norm(0.57735, 0.57735, 0.57735) UV(0.4629, 0.65941)
|
||||
V 10: Pos(9.130006, -4.5, 0.2) Norm(0.57735, -0.57735, 0.57735) UV(0.4629, 0.510204)
|
||||
V 11: Pos(9.130006, -4.5, 0.0) Norm(0.57735, -0.57735, -0.57735) UV(0.503716, 0.510204)
|
||||
V 12: Pos(9.130006, -4.5, 0.0) Norm(0.57735, -0.57735, -0.57735) UV(0.891791, 0.835592)
|
||||
V 13: Pos(9.130006, -4.5, 0.2) Norm(0.57735, -0.57735, 0.57735) UV(0.850975, 0.835592)
|
||||
V 14: Pos(7.130006, -4.5, 0.2) Norm(-0.57735, -0.57735, 0.57735) UV(0.850975, 0.428571)
|
||||
V 15: Pos(7.130006, -4.5, 0.0) Norm(-0.57735, -0.57735, -0.57735) UV(0.891792, 0.428571)
|
||||
V 16: Pos(7.130006, -3.75, 0.0) Norm(-0.57735, 0.57735, -0.57735) UV(0.153061, 0.510204)
|
||||
V 17: Pos(9.130006, -3.75, 0.0) Norm(0.57735, 0.57735, -0.57735) UV(0.153061, 0.918367)
|
||||
V 18: Pos(9.130006, -4.5, 0.0) Norm(0.57735, -0.57735, -0.57735) UV(0.0, 0.918367)
|
||||
V 19: Pos(7.130006, -4.5, 0.0) Norm(-0.57735, -0.57735, -0.57735) UV(0.0, 0.510204)
|
||||
V 20: Pos(9.130006, -3.75, 0.2) Norm(0.57735, 0.57735, 0.57735) UV(0.306122, 0.510204)
|
||||
V 21: Pos(7.130006, -3.75, 0.2) Norm(-0.57735, 0.57735, 0.57735) UV(0.306122, 0.918367)
|
||||
V 22: Pos(7.130006, -4.5, 0.2) Norm(-0.57735, -0.57735, 0.57735) UV(0.153061, 0.918367)
|
||||
V 23: Pos(9.130006, -4.5, 0.2) Norm(0.57735, -0.57735, 0.57735) UV(0.153061, 0.510204)
|
||||
V 24: Pos(7.430006, -3.875, 0.0) Norm(-0.707107, -0.707107, 0.0) UV(0.0, 0.0)
|
||||
V 25: Pos(7.430006, -3.875, 2.2) Norm(-0.57735, -0.57735, 0.57735) UV(0.0, 0.0)
|
||||
V 26: Pos(7.430006, -3.625, 2.2) Norm(-0.57735, 0.57735, 0.57735) UV(0.0, 0.0)
|
||||
V 27: Pos(7.430006, -3.625, 0.0) Norm(-0.707107, 0.707107, 0.0) UV(0.0, 0.0)
|
||||
V 28: Pos(8.830006, -3.625, 2.2) Norm(0.57735, 0.57735, 0.57735) UV(0.0, 0.0)
|
||||
V 29: Pos(8.830006, -3.625, 0.0) Norm(0.707107, 0.707107, 0.0) UV(0.0, 0.0)
|
||||
V 30: Pos(8.830006, -3.875, 2.2) Norm(0.57735, -0.57735, 0.57735) UV(0.0, 0.0)
|
||||
V 31: Pos(8.830006, -3.875, 0.0) Norm(0.707107, -0.707107, 0.0) UV(0.0, 0.0)
|
||||
V 32: Pos(7.530005, -3.9, 0.0) Norm(-0.57735, -0.57735, -0.57735) UV(0.897274, 0.937347)
|
||||
V 33: Pos(7.530005, -3.9, 2.1) Norm(-0.57735, -0.57735, 0.57735) UV(0.897274, 0.508775)
|
||||
V 34: Pos(7.530005, -3.8, 2.1) Norm(-0.57735, 0.57735, 0.57735) UV(0.917624, 0.508775)
|
||||
V 35: Pos(7.530005, -3.8, 0.0) Norm(-0.57735, 0.57735, -0.57735) UV(0.917624, 0.937347)
|
||||
V 36: Pos(7.530005, -3.8, 0.0) Norm(-0.57735, 0.57735, -0.57735) UV(0.612245, 0.857143)
|
||||
V 37: Pos(7.530005, -3.8, 2.1) Norm(-0.57735, 0.57735, 0.57735) UV(0.612245, 0.428571)
|
||||
V 38: Pos(8.730006, -3.8, 2.1) Norm(0.57735, 0.57735, 0.57735) UV(0.850975, 0.428571)
|
||||
V 39: Pos(8.730006, -3.8, 0.0) Norm(0.57735, 0.57735, -0.57735) UV(0.850975, 0.857143)
|
||||
V 40: Pos(8.730006, -3.8, 0.0) Norm(0.57735, 0.57735, -0.57735) UV(0.917624, 0.937347)
|
||||
V 41: Pos(8.730006, -3.8, 2.1) Norm(0.57735, 0.57735, 0.57735) UV(0.917624, 0.508775)
|
||||
V 42: Pos(8.730006, -3.9, 2.1) Norm(0.57735, -0.57735, 0.57735) UV(0.937519, 0.508775)
|
||||
V 43: Pos(8.730006, -3.9, 0.0) Norm(0.57735, -0.57735, -0.57735) UV(0.937519, 0.937347)
|
||||
V 44: Pos(8.730006, -3.9, 0.0) Norm(0.57735, -0.57735, -0.57735) UV(0.612245, 0.428571)
|
||||
V 45: Pos(8.730006, -3.9, 2.1) Norm(0.57735, -0.57735, 0.57735) UV(0.612245, 0.0)
|
||||
V 46: Pos(7.530005, -3.9, 2.1) Norm(-0.57735, -0.57735, 0.57735) UV(0.856457, 0.0)
|
||||
V 47: Pos(7.530005, -3.9, 0.0) Norm(-0.57735, -0.57735, -0.57735) UV(0.856457, 0.428571)
|
||||
V 48: Pos(7.530005, -3.8, 0.0) Norm(-0.57735, 0.57735, -0.57735) UV(0.524124, 0.510204)
|
||||
V 49: Pos(8.730006, -3.8, 0.0) Norm(0.57735, 0.57735, -0.57735) UV(0.524124, 0.755102)
|
||||
V 50: Pos(8.730006, -3.9, 0.0) Norm(0.57735, -0.57735, -0.57735) UV(0.503716, 0.755102)
|
||||
V 51: Pos(7.530005, -3.9, 0.0) Norm(-0.57735, -0.57735, -0.57735) UV(0.503716, 0.510204)
|
||||
V 52: Pos(8.730006, -3.8, 2.1) Norm(0.57735, 0.57735, 0.57735) UV(0.544533, 0.510204)
|
||||
V 53: Pos(7.530005, -3.8, 2.1) Norm(-0.57735, 0.57735, 0.57735) UV(0.544533, 0.755102)
|
||||
V 54: Pos(7.530005, -3.9, 2.1) Norm(-0.57735, -0.57735, 0.57735) UV(0.524124, 0.755102)
|
||||
V 55: Pos(8.730006, -3.9, 2.1) Norm(0.57735, -0.57735, 0.57735) UV(0.524124, 0.510204)
|
||||
V 56: Pos(6.880006, -5.25, 2.325) Norm(-0.57735, -0.57735, -0.57735) UV(0.336735, 0.815469)
|
||||
V 57: Pos(6.880006, -5.25, 2.475) Norm(-0.57735, -0.57735, 0.57735) UV(0.306122, 0.815469)
|
||||
V 58: Pos(6.880006, -3.75, 2.475) Norm(-0.57735, 0.57735, 0.57735) UV(0.306122, 0.510204)
|
||||
V 59: Pos(6.880006, -3.75, 2.325) Norm(-0.57735, 0.57735, -0.57735) UV(0.336735, 0.510204)
|
||||
V 60: Pos(6.880006, -3.75, 2.325) Norm(-0.57735, 0.57735, -0.57735) UV(0.958498, 0.497355)
|
||||
V 61: Pos(6.880006, -3.75, 2.475) Norm(-0.57735, 0.57735, 0.57735) UV(0.927886, 0.497355)
|
||||
V 62: Pos(9.380006, -3.75, 2.475) Norm(0.57735, 0.57735, 0.57735) UV(0.927886, 0.0)
|
||||
V 63: Pos(9.380006, -3.75, 2.325) Norm(0.57735, 0.57735, -0.57735) UV(0.958498, 0.0)
|
||||
V 64: Pos(9.380006, -3.75, 2.325) Norm(0.57735, 0.57735, -0.57735) UV(0.367347, 0.808617)
|
||||
V 65: Pos(9.380006, -3.75, 2.475) Norm(0.57735, 0.57735, 0.57735) UV(0.336735, 0.808617)
|
||||
V 66: Pos(9.380006, -5.25, 2.475) Norm(0.57735, -0.57735, 0.57735) UV(0.336735, 0.510204)
|
||||
V 67: Pos(9.380006, -5.25, 2.325) Norm(0.57735, -0.57735, -0.57735) UV(0.367347, 0.510204)
|
||||
V 68: Pos(9.380006, -5.25, 2.325) Norm(0.57735, -0.57735, -0.57735) UV(0.927886, 0.508775)
|
||||
V 69: Pos(9.380006, -5.25, 2.475) Norm(0.57735, -0.57735, 0.57735) UV(0.897273, 0.508775)
|
||||
V 70: Pos(6.880006, -5.25, 2.475) Norm(-0.57735, -0.57735, 0.57735) UV(0.897273, -0.0)
|
||||
V 71: Pos(6.880006, -5.25, 2.325) Norm(-0.57735, -0.57735, -0.57735) UV(0.927886, -0.0)
|
||||
V 72: Pos(6.880006, -3.75, 2.325) Norm(-0.57735, 0.57735, -0.57735) UV(0.306122, 0.0)
|
||||
V 73: Pos(9.380006, -3.75, 2.325) Norm(0.57735, 0.57735, -0.57735) UV(0.306122, 0.510204)
|
||||
V 74: Pos(9.380006, -5.25, 2.325) Norm(0.57735, -0.57735, -0.57735) UV(-0.0, 0.510204)
|
||||
V 75: Pos(6.880006, -5.25, 2.325) Norm(-0.57735, -0.57735, -0.57735) UV(0.0, 0.0)
|
||||
V 76: Pos(9.380006, -3.75, 2.475) Norm(0.57735, 0.57735, 0.57735) UV(0.612245, 0.0)
|
||||
V 77: Pos(6.880006, -3.75, 2.475) Norm(-0.57735, 0.57735, 0.57735) UV(0.612245, 0.510204)
|
||||
V 78: Pos(6.880006, -5.25, 2.475) Norm(-0.57735, -0.57735, 0.57735) UV(0.306122, 0.510204)
|
||||
V 79: Pos(9.380006, -5.25, 2.475) Norm(0.57735, -0.57735, 0.57735) UV(0.306122, 0.0)
|
||||
V 80: Pos(7.080006, -5.1, 0.0) Norm(-3e-06, 0.727885, -0.685699) UV(0.953355, 0.987151)
|
||||
V 81: Pos(7.080006, -5.1, 2.4) Norm(-3e-06, 0.727885, 0.685699) UV(0.953355, 0.497355)
|
||||
V 82: Pos(7.08976, -5.100961, 2.4) Norm(0.142, 0.713894, 0.685705) UV(0.955252, 0.497355)
|
||||
V 83: Pos(7.08976, -5.100961, 0.0) Norm(0.142, 0.713894, -0.685705) UV(0.955252, 0.987151)
|
||||
V 84: Pos(7.09914, -5.103806, 2.4) Norm(0.278547, 0.672481, 0.685698) UV(0.956989, 0.497355)
|
||||
V 85: Pos(7.09914, -5.103806, 0.0) Norm(0.278548, 0.67248, -0.685697) UV(0.956989, 0.987151)
|
||||
V 86: Pos(7.107784, -5.108427, 2.4) Norm(0.404383, 0.605212, 0.685706) UV(0.958498, 0.497355)
|
||||
V 87: Pos(7.107784, -5.108427, 0.0) Norm(0.404384, 0.605212, -0.685706) UV(0.958498, 0.987151)
|
||||
V 88: Pos(7.107784, -5.108427, 0.0) Norm(0.404384, 0.605212, -0.685706) UV(0.367347, 1.0)
|
||||
V 89: Pos(7.107784, -5.108427, 2.4) Norm(0.404383, 0.605212, 0.685706) UV(0.367347, 0.510204)
|
||||
V 90: Pos(7.115361, -5.114645, 2.4) Norm(0.514694, 0.514694, 0.685697) UV(0.368929, 0.510204)
|
||||
V 91: Pos(7.115361, -5.114645, 0.0) Norm(0.514694, 0.514694, -0.685697) UV(0.368929, 1.0)
|
||||
V 92: Pos(7.121579, -5.122221, 2.4) Norm(0.605217, 0.404381, 0.685703) UV(0.370719, 0.510204)
|
||||
V 93: Pos(7.121579, -5.122221, 0.0) Norm(0.605217, 0.404381, -0.685703) UV(0.370719, 1.0)
|
||||
V 94: Pos(7.1262, -5.130866, 2.4) Norm(0.672491, 0.278519, 0.685699) UV(0.372649, 0.510204)
|
||||
V 95: Pos(7.1262, -5.130866, 0.0) Norm(0.672491, 0.278519, -0.685699) UV(0.372649, 1.0)
|
||||
V 96: Pos(7.129045, -5.140245, 2.4) Norm(0.713888, 0.142003, 0.68571) UV(0.374645, 0.510204)
|
||||
V 97: Pos(7.129045, -5.140245, 0.0) Norm(0.713889, 0.142002, -0.68571) UV(0.374645, 1.0)
|
||||
V 98: Pos(7.130006, -5.15, 2.4) Norm(0.727893, 0.0, 0.685691) UV(0.376629, 0.510204)
|
||||
V 99: Pos(7.130006, -5.15, 0.0) Norm(0.727893, 0.0, -0.685691) UV(0.376629, 1.0)
|
||||
V 100: Pos(7.129045, -5.159755, 2.4) Norm(0.713888, -0.142003, 0.68571) UV(0.378526, 0.510204)
|
||||
V 101: Pos(7.129045, -5.159755, 0.0) Norm(0.713889, -0.142002, -0.68571) UV(0.378526, 1.0)
|
||||
V 102: Pos(7.1262, -5.169134, 2.4) Norm(0.672491, -0.278519, 0.685699) UV(0.380262, 0.510204)
|
||||
V 103: Pos(7.1262, -5.169134, 0.0) Norm(0.672491, -0.278519, -0.685699) UV(0.380262, 1.0)
|
||||
V 104: Pos(7.121579, -5.177779, 2.4) Norm(0.605217, -0.404381, 0.685703) UV(0.381772, 0.510204)
|
||||
V 105: Pos(7.121579, -5.177779, 0.0) Norm(0.605217, -0.404381, -0.685703) UV(0.381772, 1.0)
|
||||
V 106: Pos(7.121579, -5.177779, 0.0) Norm(0.605217, -0.404381, -0.685703) UV(0.958498, 0.979592)
|
||||
V 107: Pos(7.121579, -5.177779, 2.4) Norm(0.605217, -0.404381, 0.685703) UV(0.958498, 0.489796)
|
||||
V 108: Pos(7.115361, -5.185356, 2.4) Norm(0.514694, -0.514694, 0.685697) UV(0.959879, 0.489796)
|
||||
V 109: Pos(7.115361, -5.185356, 0.0) Norm(0.514694, -0.514694, -0.685697) UV(0.959879, 0.979592)
|
||||
V 110: Pos(7.107784, -5.191574, 2.4) Norm(0.404383, -0.605212, 0.685706) UV(0.961516, 0.489796)
|
||||
V 111: Pos(7.107784, -5.191574, 0.0) Norm(0.404384, -0.605212, -0.685706) UV(0.961516, 0.979592)
|
||||
V 112: Pos(7.09914, -5.196194, 2.4) Norm(0.278547, -0.672481, 0.685698) UV(0.963346, 0.489796)
|
||||
V 113: Pos(7.09914, -5.196194, 0.0) Norm(0.278548, -0.67248, -0.685697) UV(0.963346, 0.979592)
|
||||
V 114: Pos(7.08976, -5.199039, 2.4) Norm(0.142, -0.713894, 0.685705) UV(0.965298, 0.489796)
|
||||
V 115: Pos(7.08976, -5.199039, 0.0) Norm(0.142, -0.713894, -0.685705) UV(0.965298, 0.979592)
|
||||
V 116: Pos(7.080006, -5.2, 2.4) Norm(-3e-06, -0.727885, 0.685699) UV(0.967298, 0.489796)
|
||||
V 117: Pos(7.080006, -5.2, 0.0) Norm(-3e-06, -0.727885, -0.685699) UV(0.967298, 0.979592)
|
||||
V 118: Pos(7.070251, -5.199039, 2.4) Norm(-0.141995, -0.713895, 0.685705) UV(0.969268, 0.489796)
|
||||
V 119: Pos(7.070251, -5.199039, 0.0) Norm(-0.141995, -0.713895, -0.685705) UV(0.969268, 0.979592)
|
||||
V 120: Pos(7.060871, -5.196194, 2.4) Norm(-0.278553, -0.672477, 0.685699) UV(0.971134, 0.489796)
|
||||
V 121: Pos(7.060871, -5.196194, 0.0) Norm(-0.278552, -0.672478, -0.685699) UV(0.971134, 0.979592)
|
||||
V 122: Pos(7.052227, -5.191574, 2.4) Norm(-0.404396, -0.605205, 0.685705) UV(0.972823, 0.489796)
|
||||
V 123: Pos(7.052227, -5.191574, 0.0) Norm(-0.404396, -0.605205, -0.685705) UV(0.972823, 0.979592)
|
||||
V 124: Pos(7.04465, -5.185356, 2.4) Norm(-0.514694, -0.514694, 0.685697) UV(0.97427, 0.489796)
|
||||
V 125: Pos(7.04465, -5.185356, 0.0) Norm(-0.514694, -0.514694, -0.685697) UV(0.97427, 0.979592)
|
||||
V 126: Pos(7.04465, -5.185356, 0.0) Norm(-0.514694, -0.514694, -0.685697) UV(0.40914, 1.0)
|
||||
V 127: Pos(7.04465, -5.185356, 2.4) Norm(-0.514694, -0.514694, 0.685697) UV(0.40914, 0.510204)
|
||||
V 128: Pos(7.038432, -5.177779, 2.4) Norm(-0.605217, -0.40438, 0.685703) UV(0.410777, 0.510204)
|
||||
V 129: Pos(7.038432, -5.177779, 0.0) Norm(-0.605217, -0.404381, -0.685703) UV(0.410777, 1.0)
|
||||
V 130: Pos(7.033812, -5.169134, 2.4) Norm(-0.672482, -0.278545, 0.685697) UV(0.412607, 0.510204)
|
||||
V 131: Pos(7.033812, -5.169134, 0.0) Norm(-0.672481, -0.278545, -0.685698) UV(0.412607, 1.0)
|
||||
V 132: Pos(7.030967, -5.159755, 2.4) Norm(-0.713882, -0.14203, 0.685711) UV(0.414559, 0.510204)
|
||||
V 133: Pos(7.030967, -5.159755, 0.0) Norm(-0.713882, -0.14203, -0.685712) UV(0.414559, 1.0)
|
||||
V 134: Pos(7.030005, -5.15, 2.4) Norm(-0.727893, 0.0, 0.685691) UV(0.416559, 0.510204)
|
||||
V 135: Pos(7.030005, -5.15, 0.0) Norm(-0.727893, 0.0, -0.685691) UV(0.416559, 1.0)
|
||||
V 136: Pos(7.030967, -5.140245, 2.4) Norm(-0.713882, 0.14203, 0.685711) UV(0.41853, 0.510204)
|
||||
V 137: Pos(7.030967, -5.140245, 0.0) Norm(-0.713882, 0.14203, -0.685712) UV(0.41853, 1.0)
|
||||
V 138: Pos(7.033812, -5.130866, 2.4) Norm(-0.672482, 0.278545, 0.685697) UV(0.420395, 0.510204)
|
||||
V 139: Pos(7.033812, -5.130866, 0.0) Norm(-0.672481, 0.278545, -0.685698) UV(0.420395, 1.0)
|
||||
V 140: Pos(7.038432, -5.122221, 2.4) Norm(-0.605217, 0.40438, 0.685703) UV(0.422084, 0.510204)
|
||||
V 141: Pos(7.038432, -5.122221, 0.0) Norm(-0.605217, 0.404381, -0.685703) UV(0.422084, 1.0)
|
||||
V 142: Pos(7.038432, -5.122221, 0.0) Norm(-0.605217, 0.404381, -0.685703) UV(0.944073, 0.987151)
|
||||
V 143: Pos(7.038432, -5.122221, 2.4) Norm(-0.605217, 0.40438, 0.685703) UV(0.944073, 0.497355)
|
||||
V 144: Pos(7.04465, -5.114645, 2.4) Norm(-0.514694, 0.514694, 0.685697) UV(0.945655, 0.497355)
|
||||
V 145: Pos(7.04465, -5.114645, 0.0) Norm(-0.514694, 0.514694, -0.685697) UV(0.945655, 0.987151)
|
||||
V 146: Pos(7.052227, -5.108427, 2.4) Norm(-0.404396, 0.605205, 0.685705) UV(0.947445, 0.497355)
|
||||
V 147: Pos(7.052227, -5.108427, 0.0) Norm(-0.404396, 0.605205, -0.685705) UV(0.947445, 0.987151)
|
||||
V 148: Pos(7.060871, -5.103806, 2.4) Norm(-0.278553, 0.672477, 0.685699) UV(0.949375, 0.497355)
|
||||
V 149: Pos(7.060871, -5.103806, 0.0) Norm(-0.278552, 0.672478, -0.685699) UV(0.949375, 0.987151)
|
||||
V 150: Pos(7.08976, -5.100961, 2.4) Norm(0.142, 0.713894, 0.685705) UV(0.545688, 0.565789)
|
||||
V 151: Pos(7.080006, -5.1, 2.4) Norm(-3e-06, 0.727885, 0.685699) UV(0.544923, 0.563941)
|
||||
V 152: Pos(7.070251, -5.100961, 2.4) Norm(-0.141995, 0.713895, 0.685705) UV(0.544533, 0.561979)
|
||||
V 153: Pos(7.060871, -5.103806, 2.4) Norm(-0.278553, 0.672477, 0.685699) UV(0.544533, 0.559978)
|
||||
V 154: Pos(7.052227, -5.108427, 2.4) Norm(-0.404396, 0.605205, 0.685705) UV(0.544923, 0.558017)
|
||||
V 155: Pos(7.04465, -5.114645, 2.4) Norm(-0.514694, 0.514694, 0.685697) UV(0.545688, 0.556169)
|
||||
V 156: Pos(7.038432, -5.122221, 2.4) Norm(-0.605217, 0.40438, 0.685703) UV(0.5468, 0.554505)
|
||||
V 157: Pos(7.033812, -5.130866, 2.4) Norm(-0.672482, 0.278545, 0.685697) UV(0.548214, 0.553091)
|
||||
V 158: Pos(7.030967, -5.140245, 2.4) Norm(-0.713882, 0.14203, 0.685711) UV(0.549878, 0.55198)
|
||||
V 159: Pos(7.030005, -5.15, 2.4) Norm(-0.727893, 0.0, 0.685691) UV(0.551726, 0.551214)
|
||||
V 160: Pos(7.030967, -5.159755, 2.4) Norm(-0.713882, -0.14203, 0.685711) UV(0.553688, 0.550824)
|
||||
V 161: Pos(7.033812, -5.169134, 2.4) Norm(-0.672482, -0.278545, 0.685697) UV(0.555688, 0.550824)
|
||||
V 162: Pos(7.038432, -5.177779, 2.4) Norm(-0.605217, -0.40438, 0.685703) UV(0.55765, 0.551214)
|
||||
V 163: Pos(7.04465, -5.185356, 2.4) Norm(-0.514694, -0.514694, 0.685697) UV(0.559498, 0.55198)
|
||||
V 164: Pos(7.052227, -5.191574, 2.4) Norm(-0.404396, -0.605205, 0.685705) UV(0.561161, 0.553091)
|
||||
V 165: Pos(7.060871, -5.196194, 2.4) Norm(-0.278553, -0.672477, 0.685699) UV(0.562576, 0.554506)
|
||||
V 166: Pos(7.070251, -5.199039, 2.4) Norm(-0.141995, -0.713895, 0.685705) UV(0.563687, 0.556169)
|
||||
V 167: Pos(7.080006, -5.2, 2.4) Norm(-3e-06, -0.727885, 0.685699) UV(0.564452, 0.558017)
|
||||
V 168: Pos(7.08976, -5.199039, 2.4) Norm(0.142, -0.713894, 0.685705) UV(0.564843, 0.559979)
|
||||
V 169: Pos(7.09914, -5.196194, 2.4) Norm(0.278547, -0.672481, 0.685698) UV(0.564843, 0.561979)
|
||||
V 170: Pos(7.107784, -5.191574, 2.4) Norm(0.404383, -0.605212, 0.685706) UV(0.564452, 0.563941)
|
||||
V 171: Pos(7.115361, -5.185356, 2.4) Norm(0.514694, -0.514694, 0.685697) UV(0.563687, 0.565789)
|
||||
V 172: Pos(7.121579, -5.177779, 2.4) Norm(0.605217, -0.404381, 0.685703) UV(0.562575, 0.567452)
|
||||
V 173: Pos(7.1262, -5.169134, 2.4) Norm(0.672491, -0.278519, 0.685699) UV(0.561161, 0.568867)
|
||||
V 174: Pos(7.129045, -5.159755, 2.4) Norm(0.713888, -0.142003, 0.68571) UV(0.559498, 0.569978)
|
||||
V 175: Pos(7.130006, -5.15, 2.4) Norm(0.727893, 0.0, 0.685691) UV(0.557649, 0.570744)
|
||||
V 176: Pos(7.129045, -5.140245, 2.4) Norm(0.713888, 0.142003, 0.68571) UV(0.555688, 0.571134)
|
||||
V 177: Pos(7.1262, -5.130866, 2.4) Norm(0.672491, 0.278519, 0.685699) UV(0.553687, 0.571134)
|
||||
V 178: Pos(7.121579, -5.122221, 2.4) Norm(0.605217, 0.404381, 0.685703) UV(0.551725, 0.570744)
|
||||
V 179: Pos(7.115361, -5.114645, 2.4) Norm(0.514694, 0.514694, 0.685697) UV(0.549877, 0.569978)
|
||||
V 180: Pos(7.107784, -5.108427, 2.4) Norm(0.404383, 0.605212, 0.685706) UV(0.548214, 0.568867)
|
||||
V 181: Pos(7.09914, -5.103806, 2.4) Norm(0.278547, 0.672481, 0.685698) UV(0.5468, 0.567452)
|
||||
V 182: Pos(7.070251, -5.100961, 2.4) Norm(-0.141995, 0.713895, 0.685705) UV(0.951371, 0.497355)
|
||||
V 183: Pos(7.070251, -5.100961, 0.0) Norm(-0.141995, 0.713895, -0.685705) UV(0.951371, 0.987151)
|
||||
V 184: Pos(7.080006, -5.1, 0.0) Norm(-3e-06, 0.727885, -0.685699) UV(0.584762, 0.523321)
|
||||
V 185: Pos(7.08976, -5.100961, 0.0) Norm(0.142, 0.713894, -0.685705) UV(0.583997, 0.525169)
|
||||
V 186: Pos(7.09914, -5.103806, 0.0) Norm(0.278548, 0.67248, -0.685697) UV(0.582886, 0.526832)
|
||||
V 187: Pos(7.107784, -5.108427, 0.0) Norm(0.404384, 0.605212, -0.685706) UV(0.581471, 0.528247)
|
||||
V 188: Pos(7.115361, -5.114645, 0.0) Norm(0.514694, 0.514694, -0.685697) UV(0.579808, 0.529358)
|
||||
V 189: Pos(7.121579, -5.122221, 0.0) Norm(0.605217, 0.404381, -0.685703) UV(0.57796, 0.530124)
|
||||
V 190: Pos(7.1262, -5.130866, 0.0) Norm(0.672491, 0.278519, -0.685699) UV(0.575998, 0.530514)
|
||||
V 191: Pos(7.129045, -5.140245, 0.0) Norm(0.713889, 0.142002, -0.68571) UV(0.573998, 0.530514)
|
||||
V 192: Pos(7.130006, -5.15, 0.0) Norm(0.727893, 0.0, -0.685691) UV(0.572036, 0.530124)
|
||||
V 193: Pos(7.129045, -5.159755, 0.0) Norm(0.713889, -0.142002, -0.68571) UV(0.570188, 0.529358)
|
||||
V 194: Pos(7.1262, -5.169134, 0.0) Norm(0.672491, -0.278519, -0.685699) UV(0.568524, 0.528247)
|
||||
V 195: Pos(7.121579, -5.177779, 0.0) Norm(0.605217, -0.404381, -0.685703) UV(0.56711, 0.526833)
|
||||
V 196: Pos(7.115361, -5.185356, 0.0) Norm(0.514694, -0.514694, -0.685697) UV(0.565998, 0.525169)
|
||||
V 197: Pos(7.107784, -5.191574, 0.0) Norm(0.404384, -0.605212, -0.685706) UV(0.565233, 0.523321)
|
||||
V 198: Pos(7.09914, -5.196194, 0.0) Norm(0.278548, -0.67248, -0.685697) UV(0.564843, 0.521359)
|
||||
V 199: Pos(7.08976, -5.199039, 0.0) Norm(0.142, -0.713894, -0.685705) UV(0.564843, 0.519359)
|
||||
V 200: Pos(7.080006, -5.2, 0.0) Norm(-3e-06, -0.727885, -0.685699) UV(0.565233, 0.517397)
|
||||
V 201: Pos(7.070251, -5.199039, 0.0) Norm(-0.141995, -0.713895, -0.685705) UV(0.565998, 0.515549)
|
||||
V 202: Pos(7.060871, -5.196194, 0.0) Norm(-0.278552, -0.672478, -0.685699) UV(0.56711, 0.513886)
|
||||
V 203: Pos(7.052227, -5.191574, 0.0) Norm(-0.404396, -0.605205, -0.685705) UV(0.568524, 0.512471)
|
||||
V 204: Pos(7.04465, -5.185356, 0.0) Norm(-0.514694, -0.514694, -0.685697) UV(0.570187, 0.51136)
|
||||
V 205: Pos(7.038432, -5.177779, 0.0) Norm(-0.605217, -0.404381, -0.685703) UV(0.572035, 0.510594)
|
||||
V 206: Pos(7.033812, -5.169134, 0.0) Norm(-0.672481, -0.278545, -0.685698) UV(0.573997, 0.510204)
|
||||
V 207: Pos(7.030967, -5.159755, 0.0) Norm(-0.713882, -0.14203, -0.685712) UV(0.575997, 0.510204)
|
||||
V 208: Pos(7.030005, -5.15, 0.0) Norm(-0.727893, 0.0, -0.685691) UV(0.577959, 0.510594)
|
||||
V 209: Pos(7.030967, -5.140245, 0.0) Norm(-0.713882, 0.14203, -0.685712) UV(0.579808, 0.51136)
|
||||
V 210: Pos(7.033812, -5.130866, 0.0) Norm(-0.672481, 0.278545, -0.685698) UV(0.581471, 0.512471)
|
||||
V 211: Pos(7.038432, -5.122221, 0.0) Norm(-0.605217, 0.404381, -0.685703) UV(0.582885, 0.513885)
|
||||
V 212: Pos(7.04465, -5.114645, 0.0) Norm(-0.514694, 0.514694, -0.685697) UV(0.583997, 0.515549)
|
||||
V 213: Pos(7.052227, -5.108427, 0.0) Norm(-0.404396, 0.605205, -0.685705) UV(0.584762, 0.517397)
|
||||
V 214: Pos(7.060871, -5.103806, 0.0) Norm(-0.278552, 0.672478, -0.685699) UV(0.585153, 0.519359)
|
||||
V 215: Pos(7.070251, -5.100961, 0.0) Norm(-0.141995, 0.713895, -0.685705) UV(0.585153, 0.521359)
|
||||
V 216: Pos(9.180006, -5.1, 0.0) Norm(-6e-06, 0.727884, -0.6857) UV(0.983552, 0.489796)
|
||||
V 217: Pos(9.180006, -5.1, 2.4) Norm(-6e-06, 0.727884, 0.6857) UV(0.983552, 0.0)
|
||||
V 218: Pos(9.189761, -5.100961, 2.4) Norm(0.142006, 0.713897, 0.685701) UV(0.985449, 0.0)
|
||||
V 219: Pos(9.189761, -5.100961, 0.0) Norm(0.142006, 0.713897, -0.685701) UV(0.985449, 0.489796)
|
||||
V 220: Pos(9.199141, -5.103806, 2.4) Norm(0.278554, 0.672475, 0.685701) UV(0.987185, 0.0)
|
||||
V 221: Pos(9.199141, -5.103806, 0.0) Norm(0.278555, 0.672475, -0.685701) UV(0.987185, 0.489796)
|
||||
V 222: Pos(9.207785, -5.108427, 2.4) Norm(0.404383, 0.605212, 0.685706) UV(0.988695, 0.0)
|
||||
V 223: Pos(9.207785, -5.108427, 0.0) Norm(0.404384, 0.605212, -0.685706) UV(0.988695, 0.489796)
|
||||
V 224: Pos(9.207785, -5.108427, 0.0) Norm(0.404384, 0.605212, -0.685706) UV(0.381772, 1.0)
|
||||
V 225: Pos(9.207785, -5.108427, 2.4) Norm(0.404383, 0.605212, 0.685706) UV(0.381772, 0.510204)
|
||||
V 226: Pos(9.215362, -5.114645, 2.4) Norm(0.514694, 0.514694, 0.685697) UV(0.383354, 0.510204)
|
||||
V 227: Pos(9.215362, -5.114645, 0.0) Norm(0.514694, 0.514694, -0.685697) UV(0.383354, 1.0)
|
||||
V 228: Pos(9.22158, -5.122221, 2.4) Norm(0.605217, 0.404381, 0.685703) UV(0.385144, 0.510204)
|
||||
V 229: Pos(9.22158, -5.122221, 0.0) Norm(0.605217, 0.404381, -0.685703) UV(0.385144, 1.0)
|
||||
V 230: Pos(9.2262, -5.130866, 2.4) Norm(0.672462, 0.278568, 0.685708) UV(0.387074, 0.510204)
|
||||
V 231: Pos(9.2262, -5.130866, 0.0) Norm(0.672462, 0.278568, -0.685708) UV(0.387074, 1.0)
|
||||
V 232: Pos(9.229046, -5.140245, 2.4) Norm(0.713905, 0.142004, 0.685693) UV(0.38907, 0.510204)
|
||||
V 233: Pos(9.229046, -5.140245, 0.0) Norm(0.713905, 0.142004, -0.685692) UV(0.38907, 1.0)
|
||||
V 234: Pos(9.230006, -5.15, 2.4) Norm(0.727876, 0.0, 0.685709) UV(0.391054, 0.510204)
|
||||
V 235: Pos(9.230006, -5.15, 0.0) Norm(0.727876, 0.0, -0.685709) UV(0.391054, 1.0)
|
||||
V 236: Pos(9.229046, -5.159755, 2.4) Norm(0.713905, -0.142004, 0.685693) UV(0.392951, 0.510204)
|
||||
V 237: Pos(9.229046, -5.159755, 0.0) Norm(0.713905, -0.142004, -0.685692) UV(0.392951, 1.0)
|
||||
V 238: Pos(9.2262, -5.169134, 2.4) Norm(0.672462, -0.278568, 0.685708) UV(0.394687, 0.510204)
|
||||
V 239: Pos(9.2262, -5.169134, 0.0) Norm(0.672462, -0.278568, -0.685708) UV(0.394687, 1.0)
|
||||
V 240: Pos(9.22158, -5.177779, 2.4) Norm(0.605217, -0.404381, 0.685703) UV(0.396197, 0.510204)
|
||||
V 241: Pos(9.22158, -5.177779, 0.0) Norm(0.605217, -0.404381, -0.685703) UV(0.396197, 1.0)
|
||||
V 242: Pos(9.22158, -5.177779, 0.0) Norm(0.605217, -0.404381, -0.685703) UV(0.958498, 0.489796)
|
||||
V 243: Pos(9.22158, -5.177779, 2.4) Norm(0.605217, -0.404381, 0.685703) UV(0.958498, 0.0)
|
||||
V 244: Pos(9.215362, -5.185356, 2.4) Norm(0.514694, -0.514694, 0.685697) UV(0.959879, 0.0)
|
||||
V 245: Pos(9.215362, -5.185356, 0.0) Norm(0.514694, -0.514694, -0.685697) UV(0.959879, 0.489796)
|
||||
V 246: Pos(9.207785, -5.191574, 2.4) Norm(0.404383, -0.605212, 0.685706) UV(0.961516, 0.0)
|
||||
V 247: Pos(9.207785, -5.191574, 0.0) Norm(0.404384, -0.605212, -0.685706) UV(0.961516, 0.489796)
|
||||
V 248: Pos(9.199141, -5.196194, 2.4) Norm(0.278554, -0.672475, 0.685701) UV(0.963346, 0.0)
|
||||
V 249: Pos(9.199141, -5.196194, 0.0) Norm(0.278555, -0.672475, -0.685701) UV(0.963346, 0.489796)
|
||||
V 250: Pos(9.189761, -5.199039, 2.4) Norm(0.142006, -0.713897, 0.685701) UV(0.965298, 0.0)
|
||||
V 251: Pos(9.189761, -5.199039, 0.0) Norm(0.142006, -0.713897, -0.685701) UV(0.965298, 0.489796)
|
||||
V 252: Pos(9.180006, -5.2, 2.4) Norm(-6e-06, -0.727884, 0.6857) UV(0.967298, 0.0)
|
||||
V 253: Pos(9.180006, -5.2, 0.0) Norm(-6e-06, -0.727884, -0.6857) UV(0.967298, 0.489796)
|
||||
V 254: Pos(9.170252, -5.199039, 2.4) Norm(-0.142012, -0.713895, 0.685702) UV(0.969268, 0.0)
|
||||
V 255: Pos(9.170252, -5.199039, 0.0) Norm(-0.142012, -0.713895, -0.685702) UV(0.969268, 0.489796)
|
||||
V 256: Pos(9.160872, -5.196194, 2.4) Norm(-0.27854, -0.672476, 0.685705) UV(0.971134, 0.0)
|
||||
V 257: Pos(9.160872, -5.196194, 0.0) Norm(-0.27854, -0.672476, -0.685706) UV(0.971134, 0.489796)
|
||||
V 258: Pos(9.152227, -5.191574, 2.4) Norm(-0.404375, -0.605223, 0.685701) UV(0.972823, 0.0)
|
||||
V 259: Pos(9.152227, -5.191574, 0.0) Norm(-0.404375, -0.605223, -0.685701) UV(0.972823, 0.489796)
|
||||
V 260: Pos(9.14465, -5.185356, 2.4) Norm(-0.514694, -0.514694, 0.685697) UV(0.97427, 0.0)
|
||||
V 261: Pos(9.14465, -5.185356, 0.0) Norm(-0.514694, -0.514694, -0.685697) UV(0.97427, 0.489796)
|
||||
V 262: Pos(9.14465, -5.185356, 0.0) Norm(-0.514694, -0.514694, -0.685697) UV(0.396197, 1.0)
|
||||
V 263: Pos(9.14465, -5.185356, 2.4) Norm(-0.514694, -0.514694, 0.685697) UV(0.396197, 0.510204)
|
||||
V 264: Pos(9.138433, -5.177779, 2.4) Norm(-0.605217, -0.40438, 0.685703) UV(0.397834, 0.510204)
|
||||
V 265: Pos(9.138433, -5.177779, 0.0) Norm(-0.605217, -0.404381, -0.685703) UV(0.397834, 1.0)
|
||||
V 266: Pos(9.133812, -5.169134, 2.4) Norm(-0.672482, -0.278545, 0.685697) UV(0.399663, 0.510204)
|
||||
V 267: Pos(9.133812, -5.169134, 0.0) Norm(-0.672481, -0.278545, -0.685698) UV(0.399663, 1.0)
|
||||
V 268: Pos(9.130967, -5.159755, 2.4) Norm(-0.713882, -0.14203, 0.685711) UV(0.401616, 0.510204)
|
||||
V 269: Pos(9.130967, -5.159755, 0.0) Norm(-0.713882, -0.14203, -0.685712) UV(0.401616, 1.0)
|
||||
V 270: Pos(9.130006, -5.15, 2.4) Norm(-0.727893, 0.0, 0.685691) UV(0.403616, 0.510204)
|
||||
V 271: Pos(9.130006, -5.15, 0.0) Norm(-0.727893, 0.0, -0.685691) UV(0.403616, 1.0)
|
||||
V 272: Pos(9.130967, -5.140245, 2.4) Norm(-0.713882, 0.14203, 0.685711) UV(0.405586, 0.510204)
|
||||
V 273: Pos(9.130967, -5.140245, 0.0) Norm(-0.713882, 0.14203, -0.685712) UV(0.405586, 1.0)
|
||||
V 274: Pos(9.133812, -5.130866, 2.4) Norm(-0.672482, 0.278545, 0.685697) UV(0.407451, 0.510204)
|
||||
V 275: Pos(9.133812, -5.130866, 0.0) Norm(-0.672481, 0.278545, -0.685698) UV(0.407451, 1.0)
|
||||
V 276: Pos(9.138433, -5.122221, 2.4) Norm(-0.605217, 0.40438, 0.685703) UV(0.40914, 0.510204)
|
||||
V 277: Pos(9.138433, -5.122221, 0.0) Norm(-0.605217, 0.404381, -0.685703) UV(0.40914, 1.0)
|
||||
V 278: Pos(9.138433, -5.122221, 0.0) Norm(-0.605217, 0.404381, -0.685703) UV(0.97427, 0.489796)
|
||||
V 279: Pos(9.138433, -5.122221, 2.4) Norm(-0.605217, 0.40438, 0.685703) UV(0.97427, 0.0)
|
||||
V 280: Pos(9.14465, -5.114645, 2.4) Norm(-0.514694, 0.514694, 0.685697) UV(0.975852, 0.0)
|
||||
V 281: Pos(9.14465, -5.114645, 0.0) Norm(-0.514694, 0.514694, -0.685697) UV(0.975852, 0.489796)
|
||||
V 282: Pos(9.152227, -5.108427, 2.4) Norm(-0.404375, 0.605223, 0.685701) UV(0.977642, 0.0)
|
||||
V 283: Pos(9.152227, -5.108427, 0.0) Norm(-0.404375, 0.605223, -0.685701) UV(0.977642, 0.489796)
|
||||
V 284: Pos(9.160872, -5.103806, 2.4) Norm(-0.27854, 0.672476, 0.685705) UV(0.979572, 0.0)
|
||||
V 285: Pos(9.160872, -5.103806, 0.0) Norm(-0.27854, 0.672476, -0.685706) UV(0.979572, 0.489796)
|
||||
V 286: Pos(9.189761, -5.100961, 2.4) Norm(0.142006, 0.713897, 0.685701) UV(0.561161, 0.528247)
|
||||
V 287: Pos(9.180006, -5.1, 2.4) Norm(-6e-06, 0.727884, 0.6857) UV(0.559498, 0.529358)
|
||||
V 288: Pos(9.170252, -5.100961, 2.4) Norm(-0.142012, 0.713895, 0.685702) UV(0.55765, 0.530124)
|
||||
V 289: Pos(9.160872, -5.103806, 2.4) Norm(-0.27854, 0.672476, 0.685705) UV(0.555688, 0.530514)
|
||||
V 290: Pos(9.152227, -5.108427, 2.4) Norm(-0.404375, 0.605223, 0.685701) UV(0.553688, 0.530514)
|
||||
V 291: Pos(9.14465, -5.114645, 2.4) Norm(-0.514694, 0.514694, 0.685697) UV(0.551726, 0.530124)
|
||||
V 292: Pos(9.138433, -5.122221, 2.4) Norm(-0.605217, 0.40438, 0.685703) UV(0.549878, 0.529358)
|
||||
V 293: Pos(9.133812, -5.130866, 2.4) Norm(-0.672482, 0.278545, 0.685697) UV(0.548214, 0.528247)
|
||||
V 294: Pos(9.130967, -5.140245, 2.4) Norm(-0.713882, 0.14203, 0.685711) UV(0.5468, 0.526833)
|
||||
V 295: Pos(9.130006, -5.15, 2.4) Norm(-0.727893, 0.0, 0.685691) UV(0.545689, 0.525169)
|
||||
V 296: Pos(9.130967, -5.159755, 2.4) Norm(-0.713882, -0.14203, 0.685711) UV(0.544923, 0.523321)
|
||||
V 297: Pos(9.133812, -5.169134, 2.4) Norm(-0.672482, -0.278545, 0.685697) UV(0.544533, 0.521359)
|
||||
V 298: Pos(9.138433, -5.177779, 2.4) Norm(-0.605217, -0.40438, 0.685703) UV(0.544533, 0.519359)
|
||||
V 299: Pos(9.14465, -5.185356, 2.4) Norm(-0.514694, -0.514694, 0.685697) UV(0.544923, 0.517397)
|
||||
V 300: Pos(9.152227, -5.191574, 2.4) Norm(-0.404375, -0.605223, 0.685701) UV(0.545688, 0.515549)
|
||||
V 301: Pos(9.160872, -5.196194, 2.4) Norm(-0.27854, -0.672476, 0.685705) UV(0.5468, 0.513886)
|
||||
V 302: Pos(9.170252, -5.199039, 2.4) Norm(-0.142012, -0.713895, 0.685702) UV(0.548214, 0.512471)
|
||||
V 303: Pos(9.180006, -5.2, 2.4) Norm(-6e-06, -0.727884, 0.6857) UV(0.549877, 0.51136)
|
||||
V 304: Pos(9.189761, -5.199039, 2.4) Norm(0.142006, -0.713897, 0.685701) UV(0.551726, 0.510594)
|
||||
V 305: Pos(9.199141, -5.196194, 2.4) Norm(0.278554, -0.672475, 0.685701) UV(0.553687, 0.510204)
|
||||
V 306: Pos(9.207785, -5.191574, 2.4) Norm(0.404383, -0.605212, 0.685706) UV(0.555688, 0.510204)
|
||||
V 307: Pos(9.215362, -5.185356, 2.4) Norm(0.514694, -0.514694, 0.685697) UV(0.55765, 0.510594)
|
||||
V 308: Pos(9.22158, -5.177779, 2.4) Norm(0.605217, -0.404381, 0.685703) UV(0.559498, 0.51136)
|
||||
V 309: Pos(9.2262, -5.169134, 2.4) Norm(0.672462, -0.278568, 0.685708) UV(0.561161, 0.512471)
|
||||
V 310: Pos(9.229046, -5.159755, 2.4) Norm(0.713905, -0.142004, 0.685693) UV(0.562576, 0.513885)
|
||||
V 311: Pos(9.230006, -5.15, 2.4) Norm(0.727876, 0.0, 0.685709) UV(0.563687, 0.515549)
|
||||
V 312: Pos(9.229046, -5.140245, 2.4) Norm(0.713905, 0.142004, 0.685693) UV(0.564452, 0.517397)
|
||||
V 313: Pos(9.2262, -5.130866, 2.4) Norm(0.672462, 0.278568, 0.685708) UV(0.564843, 0.519359)
|
||||
V 314: Pos(9.22158, -5.122221, 2.4) Norm(0.605217, 0.404381, 0.685703) UV(0.564843, 0.521359)
|
||||
V 315: Pos(9.215362, -5.114645, 2.4) Norm(0.514694, 0.514694, 0.685697) UV(0.564452, 0.523321)
|
||||
V 316: Pos(9.207785, -5.108427, 2.4) Norm(0.404383, 0.605212, 0.685706) UV(0.563687, 0.525169)
|
||||
V 317: Pos(9.199141, -5.103806, 2.4) Norm(0.278554, 0.672475, 0.685701) UV(0.562576, 0.526832)
|
||||
V 318: Pos(9.170252, -5.100961, 2.4) Norm(-0.142012, 0.713895, 0.685702) UV(0.981568, 0.0)
|
||||
V 319: Pos(9.170252, -5.100961, 0.0) Norm(-0.142012, 0.713895, -0.685702) UV(0.981568, 0.489796)
|
||||
V 320: Pos(9.180006, -5.1, 0.0) Norm(-6e-06, 0.727884, -0.6857) UV(0.548214, 0.548557)
|
||||
V 321: Pos(9.189761, -5.100961, 0.0) Norm(0.142006, 0.713897, -0.685701) UV(0.5468, 0.547142)
|
||||
V 322: Pos(9.199141, -5.103806, 0.0) Norm(0.278555, 0.672475, -0.685701) UV(0.545688, 0.545479)
|
||||
V 323: Pos(9.207785, -5.108427, 0.0) Norm(0.404384, 0.605212, -0.685706) UV(0.544923, 0.543631)
|
||||
V 324: Pos(9.215362, -5.114645, 0.0) Norm(0.514694, 0.514694, -0.685697) UV(0.544533, 0.541669)
|
||||
V 325: Pos(9.22158, -5.122221, 0.0) Norm(0.605217, 0.404381, -0.685703) UV(0.544533, 0.539669)
|
||||
V 326: Pos(9.2262, -5.130866, 0.0) Norm(0.672462, 0.278568, -0.685708) UV(0.544923, 0.537707)
|
||||
V 327: Pos(9.229046, -5.140245, 0.0) Norm(0.713905, 0.142004, -0.685692) UV(0.545688, 0.535859)
|
||||
V 328: Pos(9.230006, -5.15, 0.0) Norm(0.727876, 0.0, -0.685709) UV(0.5468, 0.534196)
|
||||
V 329: Pos(9.229046, -5.159755, 0.0) Norm(0.713905, -0.142004, -0.685692) UV(0.548214, 0.532781)
|
||||
V 330: Pos(9.2262, -5.169134, 0.0) Norm(0.672462, -0.278568, -0.685708) UV(0.549877, 0.53167)
|
||||
V 331: Pos(9.22158, -5.177779, 0.0) Norm(0.605217, -0.404381, -0.685703) UV(0.551725, 0.530904)
|
||||
V 332: Pos(9.215362, -5.185356, 0.0) Norm(0.514694, -0.514694, -0.685697) UV(0.553687, 0.530514)
|
||||
V 333: Pos(9.207785, -5.191574, 0.0) Norm(0.404384, -0.605212, -0.685706) UV(0.555687, 0.530514)
|
||||
V 334: Pos(9.199141, -5.196194, 0.0) Norm(0.278555, -0.672475, -0.685701) UV(0.557649, 0.530904)
|
||||
V 335: Pos(9.189761, -5.199039, 0.0) Norm(0.142006, -0.713897, -0.685701) UV(0.559497, 0.531669)
|
||||
V 336: Pos(9.180006, -5.2, 0.0) Norm(-6e-06, -0.727884, -0.6857) UV(0.561161, 0.532781)
|
||||
V 337: Pos(9.170252, -5.199039, 0.0) Norm(-0.142012, -0.713895, -0.685702) UV(0.562575, 0.534195)
|
||||
V 338: Pos(9.160872, -5.196194, 0.0) Norm(-0.27854, -0.672476, -0.685706) UV(0.563687, 0.535858)
|
||||
V 339: Pos(9.152227, -5.191574, 0.0) Norm(-0.404375, -0.605223, -0.685701) UV(0.564452, 0.537707)
|
||||
V 340: Pos(9.14465, -5.185356, 0.0) Norm(-0.514694, -0.514694, -0.685697) UV(0.564843, 0.539669)
|
||||
V 341: Pos(9.138433, -5.177779, 0.0) Norm(-0.605217, -0.404381, -0.685703) UV(0.564843, 0.541669)
|
||||
V 342: Pos(9.133812, -5.169134, 0.0) Norm(-0.672481, -0.278545, -0.685698) UV(0.564452, 0.543631)
|
||||
V 343: Pos(9.130967, -5.159755, 0.0) Norm(-0.713882, -0.14203, -0.685712) UV(0.563687, 0.545479)
|
||||
V 344: Pos(9.130006, -5.15, 0.0) Norm(-0.727893, 0.0, -0.685691) UV(0.562576, 0.547142)
|
||||
V 345: Pos(9.130967, -5.140245, 0.0) Norm(-0.713882, 0.14203, -0.685712) UV(0.561161, 0.548557)
|
||||
V 346: Pos(9.133812, -5.130866, 0.0) Norm(-0.672481, 0.278545, -0.685698) UV(0.559498, 0.549668)
|
||||
V 347: Pos(9.138433, -5.122221, 0.0) Norm(-0.605217, 0.404381, -0.685703) UV(0.55765, 0.550434)
|
||||
V 348: Pos(9.14465, -5.114645, 0.0) Norm(-0.514694, 0.514694, -0.685697) UV(0.555688, 0.550824)
|
||||
V 349: Pos(9.152227, -5.108427, 0.0) Norm(-0.404375, 0.605223, -0.685701) UV(0.553688, 0.550824)
|
||||
V 350: Pos(9.160872, -5.103806, 0.0) Norm(-0.27854, 0.672476, -0.685706) UV(0.551726, 0.550434)
|
||||
V 351: Pos(9.170252, -5.100961, 0.0) Norm(-0.142012, 0.713895, -0.685702) UV(0.549878, 0.549668)
|
||||
|
||||
===Triangles (Indices): 294
|
||||
Tri: 0 1 2
|
||||
Tri: 0 2 3
|
||||
Tri: 4 5 6
|
||||
Tri: 4 6 7
|
||||
Tri: 8 9 10
|
||||
Tri: 8 10 11
|
||||
Tri: 12 13 14
|
||||
Tri: 12 14 15
|
||||
Tri: 16 17 18
|
||||
Tri: 16 18 19
|
||||
Tri: 20 21 22
|
||||
Tri: 20 22 23
|
||||
Tri: 24 25 26
|
||||
Tri: 24 26 27
|
||||
Tri: 27 26 28
|
||||
Tri: 27 28 29
|
||||
Tri: 29 28 30
|
||||
Tri: 29 30 31
|
||||
Tri: 31 30 25
|
||||
Tri: 31 25 24
|
||||
Tri: 28 26 25
|
||||
Tri: 28 25 30
|
||||
Tri: 32 33 34
|
||||
Tri: 32 34 35
|
||||
Tri: 36 37 38
|
||||
Tri: 36 38 39
|
||||
Tri: 40 41 42
|
||||
Tri: 40 42 43
|
||||
Tri: 44 45 46
|
||||
Tri: 44 46 47
|
||||
Tri: 48 49 50
|
||||
Tri: 48 50 51
|
||||
Tri: 52 53 54
|
||||
Tri: 52 54 55
|
||||
Tri: 56 57 58
|
||||
Tri: 56 58 59
|
||||
Tri: 60 61 62
|
||||
Tri: 60 62 63
|
||||
Tri: 64 65 66
|
||||
Tri: 64 66 67
|
||||
Tri: 68 69 70
|
||||
Tri: 68 70 71
|
||||
Tri: 72 73 74
|
||||
Tri: 72 74 75
|
||||
Tri: 76 77 78
|
||||
Tri: 76 78 79
|
||||
Tri: 80 81 82
|
||||
Tri: 80 82 83
|
||||
Tri: 83 82 84
|
||||
Tri: 83 84 85
|
||||
Tri: 85 84 86
|
||||
Tri: 85 86 87
|
||||
Tri: 88 89 90
|
||||
Tri: 88 90 91
|
||||
Tri: 91 90 92
|
||||
Tri: 91 92 93
|
||||
Tri: 93 92 94
|
||||
Tri: 93 94 95
|
||||
Tri: 95 94 96
|
||||
Tri: 95 96 97
|
||||
Tri: 97 96 98
|
||||
Tri: 97 98 99
|
||||
Tri: 99 98 100
|
||||
Tri: 99 100 101
|
||||
Tri: 101 100 102
|
||||
Tri: 101 102 103
|
||||
Tri: 103 102 104
|
||||
Tri: 103 104 105
|
||||
Tri: 106 107 108
|
||||
Tri: 106 108 109
|
||||
Tri: 109 108 110
|
||||
Tri: 109 110 111
|
||||
Tri: 111 110 112
|
||||
Tri: 111 112 113
|
||||
Tri: 113 112 114
|
||||
Tri: 113 114 115
|
||||
Tri: 115 114 116
|
||||
Tri: 115 116 117
|
||||
Tri: 117 116 118
|
||||
Tri: 117 118 119
|
||||
Tri: 119 118 120
|
||||
Tri: 119 120 121
|
||||
Tri: 121 120 122
|
||||
Tri: 121 122 123
|
||||
Tri: 123 122 124
|
||||
Tri: 123 124 125
|
||||
Tri: 126 127 128
|
||||
Tri: 126 128 129
|
||||
Tri: 129 128 130
|
||||
Tri: 129 130 131
|
||||
Tri: 131 130 132
|
||||
Tri: 131 132 133
|
||||
Tri: 133 132 134
|
||||
Tri: 133 134 135
|
||||
Tri: 135 134 136
|
||||
Tri: 135 136 137
|
||||
Tri: 137 136 138
|
||||
Tri: 137 138 139
|
||||
Tri: 139 138 140
|
||||
Tri: 139 140 141
|
||||
Tri: 142 143 144
|
||||
Tri: 142 144 145
|
||||
Tri: 145 144 146
|
||||
Tri: 145 146 147
|
||||
Tri: 147 146 148
|
||||
Tri: 147 148 149
|
||||
Tri: 150 151 152
|
||||
Tri: 150 152 153
|
||||
Tri: 150 153 154
|
||||
Tri: 150 154 155
|
||||
Tri: 150 155 156
|
||||
Tri: 150 156 157
|
||||
Tri: 150 157 158
|
||||
Tri: 150 158 159
|
||||
Tri: 150 159 160
|
||||
Tri: 150 160 161
|
||||
Tri: 150 161 162
|
||||
Tri: 150 162 163
|
||||
Tri: 150 163 164
|
||||
Tri: 150 164 165
|
||||
Tri: 150 165 166
|
||||
Tri: 150 166 167
|
||||
Tri: 150 167 168
|
||||
Tri: 150 168 169
|
||||
Tri: 150 169 170
|
||||
Tri: 150 170 171
|
||||
Tri: 150 171 172
|
||||
Tri: 150 172 173
|
||||
Tri: 150 173 174
|
||||
Tri: 150 174 175
|
||||
Tri: 150 175 176
|
||||
Tri: 150 176 177
|
||||
Tri: 150 177 178
|
||||
Tri: 150 178 179
|
||||
Tri: 150 179 180
|
||||
Tri: 150 180 181
|
||||
Tri: 149 148 182
|
||||
Tri: 149 182 183
|
||||
Tri: 183 182 81
|
||||
Tri: 183 81 80
|
||||
Tri: 184 185 186
|
||||
Tri: 184 186 187
|
||||
Tri: 184 187 188
|
||||
Tri: 184 188 189
|
||||
Tri: 184 189 190
|
||||
Tri: 184 190 191
|
||||
Tri: 184 191 192
|
||||
Tri: 184 192 193
|
||||
Tri: 184 193 194
|
||||
Tri: 184 194 195
|
||||
Tri: 184 195 196
|
||||
Tri: 184 196 197
|
||||
Tri: 184 197 198
|
||||
Tri: 184 198 199
|
||||
Tri: 184 199 200
|
||||
Tri: 184 200 201
|
||||
Tri: 184 201 202
|
||||
Tri: 184 202 203
|
||||
Tri: 184 203 204
|
||||
Tri: 184 204 205
|
||||
Tri: 184 205 206
|
||||
Tri: 184 206 207
|
||||
Tri: 184 207 208
|
||||
Tri: 184 208 209
|
||||
Tri: 184 209 210
|
||||
Tri: 184 210 211
|
||||
Tri: 184 211 212
|
||||
Tri: 184 212 213
|
||||
Tri: 184 213 214
|
||||
Tri: 184 214 215
|
||||
Tri: 216 217 218
|
||||
Tri: 216 218 219
|
||||
Tri: 219 218 220
|
||||
Tri: 219 220 221
|
||||
Tri: 221 220 222
|
||||
Tri: 221 222 223
|
||||
Tri: 224 225 226
|
||||
Tri: 224 226 227
|
||||
Tri: 227 226 228
|
||||
Tri: 227 228 229
|
||||
Tri: 229 228 230
|
||||
Tri: 229 230 231
|
||||
Tri: 231 230 232
|
||||
Tri: 231 232 233
|
||||
Tri: 233 232 234
|
||||
Tri: 233 234 235
|
||||
Tri: 235 234 236
|
||||
Tri: 235 236 237
|
||||
Tri: 237 236 238
|
||||
Tri: 237 238 239
|
||||
Tri: 239 238 240
|
||||
Tri: 239 240 241
|
||||
Tri: 242 243 244
|
||||
Tri: 242 244 245
|
||||
Tri: 245 244 246
|
||||
Tri: 245 246 247
|
||||
Tri: 247 246 248
|
||||
Tri: 247 248 249
|
||||
Tri: 249 248 250
|
||||
Tri: 249 250 251
|
||||
Tri: 251 250 252
|
||||
Tri: 251 252 253
|
||||
Tri: 253 252 254
|
||||
Tri: 253 254 255
|
||||
Tri: 255 254 256
|
||||
Tri: 255 256 257
|
||||
Tri: 257 256 258
|
||||
Tri: 257 258 259
|
||||
Tri: 259 258 260
|
||||
Tri: 259 260 261
|
||||
Tri: 262 263 264
|
||||
Tri: 262 264 265
|
||||
Tri: 265 264 266
|
||||
Tri: 265 266 267
|
||||
Tri: 267 266 268
|
||||
Tri: 267 268 269
|
||||
Tri: 269 268 270
|
||||
Tri: 269 270 271
|
||||
Tri: 271 270 272
|
||||
Tri: 271 272 273
|
||||
Tri: 273 272 274
|
||||
Tri: 273 274 275
|
||||
Tri: 275 274 276
|
||||
Tri: 275 276 277
|
||||
Tri: 278 279 280
|
||||
Tri: 278 280 281
|
||||
Tri: 281 280 282
|
||||
Tri: 281 282 283
|
||||
Tri: 283 282 284
|
||||
Tri: 283 284 285
|
||||
Tri: 286 287 288
|
||||
Tri: 286 288 289
|
||||
Tri: 286 289 290
|
||||
Tri: 286 290 291
|
||||
Tri: 286 291 292
|
||||
Tri: 286 292 293
|
||||
Tri: 286 293 294
|
||||
Tri: 286 294 295
|
||||
Tri: 286 295 296
|
||||
Tri: 286 296 297
|
||||
Tri: 286 297 298
|
||||
Tri: 286 298 299
|
||||
Tri: 286 299 300
|
||||
Tri: 286 300 301
|
||||
Tri: 286 301 302
|
||||
Tri: 286 302 303
|
||||
Tri: 286 303 304
|
||||
Tri: 286 304 305
|
||||
Tri: 286 305 306
|
||||
Tri: 286 306 307
|
||||
Tri: 286 307 308
|
||||
Tri: 286 308 309
|
||||
Tri: 286 309 310
|
||||
Tri: 286 310 311
|
||||
Tri: 286 311 312
|
||||
Tri: 286 312 313
|
||||
Tri: 286 313 314
|
||||
Tri: 286 314 315
|
||||
Tri: 286 315 316
|
||||
Tri: 286 316 317
|
||||
Tri: 285 284 318
|
||||
Tri: 285 318 319
|
||||
Tri: 319 318 217
|
||||
Tri: 319 217 216
|
||||
Tri: 320 321 322
|
||||
Tri: 320 322 323
|
||||
Tri: 320 323 324
|
||||
Tri: 320 324 325
|
||||
Tri: 320 325 326
|
||||
Tri: 320 326 327
|
||||
Tri: 320 327 328
|
||||
Tri: 320 328 329
|
||||
Tri: 320 329 330
|
||||
Tri: 320 330 331
|
||||
Tri: 320 331 332
|
||||
Tri: 320 332 333
|
||||
Tri: 320 333 334
|
||||
Tri: 320 334 335
|
||||
Tri: 320 335 336
|
||||
Tri: 320 336 337
|
||||
Tri: 320 337 338
|
||||
Tri: 320 338 339
|
||||
Tri: 320 339 340
|
||||
Tri: 320 340 341
|
||||
Tri: 320 341 342
|
||||
Tri: 320 342 343
|
||||
Tri: 320 343 344
|
||||
Tri: 320 344 345
|
||||
Tri: 320 345 346
|
||||
Tri: 320 346 347
|
||||
Tri: 320 347 348
|
||||
Tri: 320 348 349
|
||||
Tri: 320 349 350
|
||||
Tri: 320 350 351
|
||||
BIN
resources/w/exterior/tree001.png
(Stored with Git LFS)
Normal file
BIN
resources/w/exterior/tree001.png
(Stored with Git LFS)
Normal file
Binary file not shown.
122796
resources/w/exterior/tree001.txt
Normal file
122796
resources/w/exterior/tree001.txt
Normal file
File diff suppressed because it is too large
Load Diff
25960
resources/w/exterior/tree002.txt
Normal file
25960
resources/w/exterior/tree002.txt
Normal file
File diff suppressed because it is too large
Load Diff
BIN
resources/w/exterior/tree_source001.png
(Stored with Git LFS)
Normal file
BIN
resources/w/exterior/tree_source001.png
(Stored with Git LFS)
Normal file
Binary file not shown.
@ -421,8 +421,10 @@ void Character::draw(Renderer& renderer) {
|
||||
auto it = animations.find(drawState);
|
||||
if (it == animations.end()) return;
|
||||
|
||||
renderer.shaderManager.PushShader(defaultShaderName);
|
||||
renderer.shaderManager.PushShader("fog");
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
const float playerEyePos[3] = { 0.0f, 0.0f, -Environment::zoom };
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePos);
|
||||
|
||||
renderer.PushPerspectiveProjectionMatrix(1.0 / 1.5,
|
||||
static_cast<float>(Environment::width) / static_cast<float>(Environment::height),
|
||||
@ -473,11 +475,13 @@ void Character::drawGpuSkinning(Renderer& renderer) {
|
||||
|
||||
if (anim.gpuSkinningShaderData.skinningMatrices.empty()) return;
|
||||
}
|
||||
static const std::string skinningShaderName = "skinning";
|
||||
static const std::string skinningShaderName = "fog_skinning";
|
||||
static const std::string boneMatricesUniform = "uBoneMatrices[0]";
|
||||
|
||||
renderer.shaderManager.PushShader(skinningShaderName);
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
const float playerEyePosSkin[3] = { 0.0f, 0.0f, -Environment::zoom };
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosSkin);
|
||||
|
||||
renderer.PushPerspectiveProjectionMatrix(1.0 / 1.5,
|
||||
static_cast<float>(Environment::width) / static_cast<float>(Environment::height),
|
||||
@ -505,8 +509,9 @@ void Character::drawGpuSkinning(Renderer& renderer) {
|
||||
|
||||
renderer.PopMatrix();
|
||||
|
||||
renderer.shaderManager.PushShader(defaultShaderName);
|
||||
renderer.shaderManager.PushShader("fog");
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosSkin);
|
||||
drawAttachedWeapon(renderer);
|
||||
renderer.shaderManager.PopShader();
|
||||
|
||||
@ -688,13 +693,15 @@ void Character::drawCpuWithShadow(Renderer& renderer, const Eigen::Matrix4f& lig
|
||||
auto it = animations.find(drawState);
|
||||
if (it == animations.end()) return;
|
||||
|
||||
static const std::string shadowShader = "default_shadow";
|
||||
static const std::string shadowShader = "fog_shadow";
|
||||
|
||||
renderer.shaderManager.PushShader(shadowShader);
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform1i("uShadowMap", 1);
|
||||
renderer.RenderUniformMatrix4fv("uLightFromCamera", false, lightFromCamera.data());
|
||||
renderer.RenderUniform3fv("uLightDir", lightDirCamera.data());
|
||||
const float playerEyePosShadow[3] = { 0.0f, 0.0f, -Environment::zoom };
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosShadow);
|
||||
|
||||
glActiveTexture(GL_TEXTURE1);
|
||||
glBindTexture(GL_TEXTURE_2D, shadowMapTex);
|
||||
@ -724,8 +731,9 @@ void Character::drawCpuWithShadow(Renderer& renderer, const Eigen::Matrix4f& lig
|
||||
|
||||
renderer.PopMatrix();
|
||||
|
||||
renderer.shaderManager.PushShader(defaultShaderName);
|
||||
renderer.shaderManager.PushShader("fog");
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosShadow);
|
||||
drawAttachedWeapon(renderer);
|
||||
renderer.shaderManager.PopShader();
|
||||
|
||||
@ -744,7 +752,7 @@ void Character::drawGpuSkinningWithShadow(Renderer& renderer, const Eigen::Matri
|
||||
|
||||
CheckGlError(__FILE__, __LINE__);
|
||||
|
||||
static const std::string skinningShadowShader = "skinning_shadow";
|
||||
static const std::string skinningShadowShader = "fog_skinning_shadow";
|
||||
static const std::string boneMatricesUniform = "uBoneMatrices[0]";
|
||||
|
||||
renderer.shaderManager.PushShader(skinningShadowShader);
|
||||
@ -752,6 +760,8 @@ void Character::drawGpuSkinningWithShadow(Renderer& renderer, const Eigen::Matri
|
||||
renderer.RenderUniform1i("uShadowMap", 1);
|
||||
renderer.RenderUniformMatrix4fv("uLightFromCamera", false, lightFromCamera.data());
|
||||
renderer.RenderUniform3fv("uLightDir", lightDirCamera.data());
|
||||
const float playerEyePosSkinShadow[3] = { 0.0f, 0.0f, -Environment::zoom };
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosSkinShadow);
|
||||
|
||||
CheckGlError(__FILE__, __LINE__);
|
||||
|
||||
@ -789,8 +799,9 @@ void Character::drawGpuSkinningWithShadow(Renderer& renderer, const Eigen::Matri
|
||||
|
||||
renderer.PopMatrix();
|
||||
|
||||
renderer.shaderManager.PushShader(defaultShaderName);
|
||||
renderer.shaderManager.PushShader("fog");
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePosSkinShadow);
|
||||
drawAttachedWeapon(renderer);
|
||||
renderer.shaderManager.PopShader();
|
||||
|
||||
|
||||
52
src/Game.cpp
52
src/Game.cpp
@ -24,12 +24,12 @@
|
||||
|
||||
namespace ZL
|
||||
{
|
||||
void set_Texture(Character& npc, TextureDataStruct& texture)
|
||||
void set_Texture(Character& npc, const TextureDataStruct& texture)
|
||||
{
|
||||
auto tt = std::make_shared<Texture>(texture);
|
||||
npc.setTexture(tt);
|
||||
}
|
||||
void set_Texture(Character& npc, const std::string& meshName, TextureDataStruct& texture)
|
||||
void set_Texture(Character& npc, const std::string& meshName, const TextureDataStruct& texture)
|
||||
{
|
||||
auto tt = std::make_shared<Texture>(texture);
|
||||
npc.setTexture(meshName, tt);
|
||||
@ -142,6 +142,8 @@ namespace ZL
|
||||
renderer.shaderManager.AddShaderFromFiles("planetLand", "resources/shaders/planet_land.vertex", "resources/shaders/planet_land_web.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("spark", "resources/shaders/spark.vertex", "resources/shaders/spark_web.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("skinning", "resources/shaders/skinning.vertex", "resources/shaders/default_web.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("fog", "resources/shaders/fog.vertex", "resources/shaders/fog_web.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("fog_skinning", "resources/shaders/fog_skinning.vertex", "resources/shaders/fog_web.fragment", CONST_ZIP_FILE);
|
||||
|
||||
#else
|
||||
renderer.shaderManager.AddShaderFromFiles("env_sky", "resources/shaders/env_sky.vertex", "resources/shaders/env_sky_desktop.fragment", CONST_ZIP_FILE);
|
||||
@ -151,13 +153,42 @@ namespace ZL
|
||||
renderer.shaderManager.AddShaderFromFiles("planetLand", "resources/shaders/planet_land.vertex", "resources/shaders/planet_land_desktop.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("spark", "resources/shaders/spark.vertex", "resources/shaders/spark_desktop.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("skinning", "resources/shaders/skinning.vertex", "resources/shaders/default_desktop.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("fog", "resources/shaders/fog.vertex", "resources/shaders/fog_desktop.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("fog_skinning", "resources/shaders/fog_skinning.vertex", "resources/shaders/fog_desktop.fragment", CONST_ZIP_FILE);
|
||||
#endif
|
||||
|
||||
std::cout << "Load resurces step 4" << std::endl;
|
||||
|
||||
currentLocation = std::make_unique<Location>(renderer, inventory);
|
||||
LocationSetup params1;
|
||||
params1.roomMeshPath = "resources/w/room001.txt";
|
||||
params1.roomTexturePath = "resources/w/room005.png";
|
||||
params1.gameObjectsJsonPath = "resources/config2/gameobjects.json";
|
||||
params1.npcsJsonPath = "resources/config2/npcs.json";
|
||||
params1.dialoguesJsonPath = "resources/dialogue/sample_dialogues.json";
|
||||
params1.navigationJsonPath = "resources/config2/navigation.json";
|
||||
params1.scriptPath = "resources/start.lua";
|
||||
params1.playerPosition = Eigen::Vector3f::Zero();
|
||||
params1.ghostPosition = Eigen::Vector3f(0.f, 0.f, -20.f);
|
||||
|
||||
currentLocation->setup();
|
||||
location1 = std::make_shared<Location>(renderer, inventory);
|
||||
location1->setup(params1);
|
||||
|
||||
|
||||
LocationSetup params2 = params1;
|
||||
params2.roomMeshPath = "resources/w/exterior/Segmented_Plane002.txt";
|
||||
params2.roomTexturePath = "resources/w/exterior/Segmented_Plane002.png";
|
||||
params2.gameObjectsJsonPath = "resources/config2/gameobjects2.json";
|
||||
params2.navigationJsonPath = "resources/config2/navigation2.json";
|
||||
params2.scriptPath = "resources/start2.lua";
|
||||
params2.playerPosition = Eigen::Vector3f(7.f, 0.f, 27.f);
|
||||
|
||||
params2.npcsJsonPath = "resources/config2/npcs2.json";
|
||||
params2.ghostPosition = Eigen::Vector3f(700.f, 0.f, 700.f);
|
||||
|
||||
location2 = std::make_shared<Location>(renderer, inventory);
|
||||
location2->setup(params2);
|
||||
|
||||
currentLocation = location1;
|
||||
|
||||
std::cout << "Load resurces step 5" << std::endl;
|
||||
|
||||
@ -169,14 +200,17 @@ namespace ZL
|
||||
renderer.shaderManager.AddShaderFromFiles("shadow_depth_skinning", "resources/shaders/shadow_depth_skinning.vertex", "resources/shaders/shadow_depth_web.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("default_shadow", "resources/shaders/default_shadow.vertex", "resources/shaders/default_shadow_web.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("skinning_shadow", "resources/shaders/skinning_shadow.vertex", "resources/shaders/default_shadow_web.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("fog_shadow", "resources/shaders/fog_shadow.vertex", "resources/shaders/fog_shadow_web.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("fog_skinning_shadow", "resources/shaders/fog_skinning_shadow.vertex", "resources/shaders/fog_shadow_web.fragment", CONST_ZIP_FILE);
|
||||
#else
|
||||
renderer.shaderManager.AddShaderFromFiles("shadow_depth", "resources/shaders/shadow_depth.vertex", "resources/shaders/shadow_depth_desktop.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("shadow_depth_skinning", "resources/shaders/shadow_depth_skinning.vertex", "resources/shaders/shadow_depth_desktop.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("default_shadow", "resources/shaders/default_shadow.vertex", "resources/shaders/default_shadow_desktop.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("skinning_shadow", "resources/shaders/skinning_shadow.vertex", "resources/shaders/default_shadow_desktop.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("fog_shadow", "resources/shaders/fog_shadow.vertex", "resources/shaders/fog_shadow_desktop.fragment", CONST_ZIP_FILE);
|
||||
renderer.shaderManager.AddShaderFromFiles("fog_skinning_shadow", "resources/shaders/fog_skinning_shadow.vertex", "resources/shaders/fog_shadow_desktop.fragment", CONST_ZIP_FILE);
|
||||
#endif
|
||||
|
||||
|
||||
std::cout << "Load resurces step 13" << std::endl;
|
||||
|
||||
// Load UI with inventory button
|
||||
@ -470,16 +504,18 @@ namespace ZL
|
||||
break;
|
||||
|
||||
case SDLK_o:
|
||||
y = y + 0.002;
|
||||
//y = y + 0.002;
|
||||
currentLocation->player->hp = 5;
|
||||
break;
|
||||
|
||||
case SDLK_k:
|
||||
y = y - 0.002;
|
||||
//y = y - 0.002;
|
||||
std::cout << "Player pos: " << currentLocation->player->position.transpose() << std::endl;
|
||||
break;
|
||||
|
||||
case SDLK_p:
|
||||
x = x + 0.002;
|
||||
currentLocation = (currentLocation == location1) ? location2 : location1;
|
||||
std::cout << "Switched to location " << ((currentLocation == location1) ? "1" : "2") << std::endl;
|
||||
break;
|
||||
|
||||
case SDLK_l:
|
||||
|
||||
@ -44,6 +44,8 @@ namespace ZL {
|
||||
VertexRenderStruct loadingMesh;
|
||||
bool loadingCompleted = false;
|
||||
|
||||
std::shared_ptr<Location> location1;
|
||||
std::shared_ptr<Location> location2;
|
||||
std::shared_ptr<Location> currentLocation;
|
||||
|
||||
Inventory inventory;
|
||||
|
||||
@ -30,18 +30,18 @@ namespace ZL
|
||||
|
||||
}
|
||||
|
||||
void Location::setup()
|
||||
void Location::setup(const LocationSetup& params)
|
||||
{
|
||||
roomTexture = std::make_unique<Texture>(CreateTextureDataFromPng("resources/w/room005.png", CONST_ZIP_FILE));
|
||||
roomMesh.data = LoadFromTextFile02("resources/w/room001.txt", CONST_ZIP_FILE);
|
||||
roomTexture = std::make_unique<Texture>(CreateTextureDataFromPng(params.roomTexturePath, CONST_ZIP_FILE));
|
||||
roomMesh.data = LoadFromTextFile02(params.roomMeshPath, CONST_ZIP_FILE);
|
||||
roomMesh.data.RotateByMatrix(Eigen::Quaternionf(Eigen::AngleAxisf(-M_PI * 0.5, Eigen::Vector3f::UnitY())).toRotationMatrix());
|
||||
roomMesh.RefreshVBO();
|
||||
|
||||
// Load static game objects
|
||||
gameObjects = GameObjectLoader::loadAndCreateGameObjects("resources/config2/gameobjects.json", renderer, CONST_ZIP_FILE);
|
||||
gameObjects = GameObjectLoader::loadAndCreateGameObjects(params.gameObjectsJsonPath, renderer, CONST_ZIP_FILE);
|
||||
|
||||
// Load interactive objects
|
||||
interactiveObjects = GameObjectLoader::loadAndCreateInteractiveObjects("resources/config2/gameobjects.json", renderer, CONST_ZIP_FILE);
|
||||
interactiveObjects = GameObjectLoader::loadAndCreateInteractiveObjects(params.gameObjectsJsonPath, renderer, CONST_ZIP_FILE);
|
||||
|
||||
|
||||
//auto playerTexture = std::make_shared<Texture>(CreateTextureDataFromPng("resources/w/gg/IMG_20260413_182354_992.png", CONST_ZIP_FILE));
|
||||
@ -98,11 +98,13 @@ namespace ZL
|
||||
|
||||
player->canAttack = true;
|
||||
player->isPlayer = true;
|
||||
player->position = params.playerPosition;
|
||||
player->setTarget(params.playerPosition);
|
||||
player->setupHitSparks(sparkTexture);
|
||||
std::cout << "Load resurces step 9" << std::endl;
|
||||
|
||||
// Load NPCs from JSON
|
||||
npcs = GameObjectLoader::loadAndCreate_Npcs("resources/config2/npcs.json", CONST_ZIP_FILE);
|
||||
npcs = GameObjectLoader::loadAndCreate_Npcs(params.npcsJsonPath, CONST_ZIP_FILE);
|
||||
for (auto& npc : npcs) {
|
||||
if (npc) npc->setupHitSparks(sparkTexture);
|
||||
}
|
||||
@ -131,7 +133,7 @@ namespace ZL
|
||||
//npc02->modelScale = 0.1f;
|
||||
npc02->modelCorrectionRotation = Eigen::Quaternionf(Eigen::AngleAxisf(M_PI, Eigen::Vector3f::UnitY()));
|
||||
|
||||
npc02->position = Eigen::Vector3f(0.f, 0.f, -20.f);
|
||||
npc02->position = params.ghostPosition;
|
||||
npc02->setTarget(npc02->position);
|
||||
npc02->canAttack = true;
|
||||
npc02->attackTarget = player.get();
|
||||
@ -145,12 +147,12 @@ namespace ZL
|
||||
std::cout << "Shadow map initialized" << std::endl;
|
||||
|
||||
|
||||
setupNavigation();
|
||||
setupNavigation(params.navigationJsonPath);
|
||||
|
||||
scriptEngine.init(this, &inventory);
|
||||
scriptEngine.init(this, &inventory, params.scriptPath);
|
||||
|
||||
dialogueSystem.init(renderer, CONST_ZIP_FILE);
|
||||
dialogueSystem.loadDatabase("resources/dialogue/sample_dialogues.json");
|
||||
dialogueSystem.loadDatabase(params.dialoguesJsonPath);
|
||||
|
||||
npcNameText = std::make_unique<TextRenderer>();
|
||||
if (!npcNameText->init(renderer, "resources/fonts/DroidSans.ttf", 24, CONST_ZIP_FILE)) {
|
||||
@ -169,7 +171,7 @@ namespace ZL
|
||||
|
||||
}
|
||||
|
||||
void Location::setupNavigation()
|
||||
void Location::setupNavigation(const std::string& navigationJsonPath)
|
||||
{
|
||||
std::vector<PathFinder::ObstacleMesh> obstacles;
|
||||
obstacles.reserve(gameObjects.size() + interactiveObjects.size());
|
||||
@ -186,7 +188,7 @@ namespace ZL
|
||||
obstacles.push_back({ &intObj.mesh.data, intObj.position });
|
||||
}
|
||||
|
||||
navigation.build(obstacles, "resources/config2/navigation.json", CONST_ZIP_FILE);
|
||||
navigation.build(obstacles, navigationJsonPath, CONST_ZIP_FILE);
|
||||
|
||||
#ifdef SHOW_PATH
|
||||
buildDebugNavMeshes();
|
||||
@ -361,12 +363,14 @@ namespace ZL
|
||||
|
||||
void Location::drawGame()
|
||||
{
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
|
||||
glClearColor(0.53, 0.81, 0.92, 1.0f);
|
||||
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
|
||||
|
||||
|
||||
renderer.shaderManager.PushShader(defaultShaderName);
|
||||
renderer.shaderManager.PushShader("fog");
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
const float playerEyePos[3] = { 0.0f, 0.0f, -Environment::zoom };
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePos);
|
||||
|
||||
renderer.PushPerspectiveProjectionMatrix(1.0 / 1.5,
|
||||
static_cast<float>(Environment::width) / static_cast<float>(Environment::height),
|
||||
@ -500,7 +504,7 @@ namespace ZL
|
||||
|
||||
void Location::drawGameWithShadows()
|
||||
{
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
glClearColor(0.53, 0.81, 0.92, 1.0f);
|
||||
glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
|
||||
|
||||
#ifdef DEBUG_LIGHT
|
||||
@ -517,11 +521,13 @@ namespace ZL
|
||||
renderer.PushSpecialMatrix(shadowMap->getLightViewMatrix());
|
||||
|
||||
#else
|
||||
static const std::string shadowShaderName = "default_shadow";
|
||||
static const std::string shadowShaderName = "fog_shadow";
|
||||
|
||||
renderer.shaderManager.PushShader(shadowShaderName);
|
||||
renderer.RenderUniform1i(textureUniformName, 0);
|
||||
renderer.RenderUniform1i("uShadowMap", 1);
|
||||
const float playerEyePos[3] = { 0.0f, 0.0f, -Environment::zoom };
|
||||
renderer.RenderUniform3fv("uPlayerEyePos", playerEyePos);
|
||||
|
||||
// Bind shadow map texture to unit 1
|
||||
glActiveTexture(GL_TEXTURE1);
|
||||
|
||||
@ -14,6 +14,19 @@
|
||||
namespace ZL
|
||||
{
|
||||
|
||||
struct LocationSetup
|
||||
{
|
||||
std::string roomMeshPath;
|
||||
std::string roomTexturePath;
|
||||
std::string gameObjectsJsonPath;
|
||||
std::string npcsJsonPath;
|
||||
std::string dialoguesJsonPath;
|
||||
std::string navigationJsonPath;
|
||||
std::string scriptPath;
|
||||
Eigen::Vector3f playerPosition = Eigen::Vector3f::Zero();
|
||||
Eigen::Vector3f ghostPosition = Eigen::Vector3f::Zero();
|
||||
};
|
||||
|
||||
class Location
|
||||
{
|
||||
public:
|
||||
@ -63,8 +76,8 @@ namespace ZL
|
||||
int lastMouseY = 0;
|
||||
|
||||
|
||||
void setup();
|
||||
void setupNavigation();
|
||||
void setup(const LocationSetup& params);
|
||||
void setupNavigation(const std::string& navigationJsonPath);
|
||||
InteractiveObject* raycastInteractiveObjects(const Eigen::Vector3f& rayOrigin, const Eigen::Vector3f& rayDir);
|
||||
Character* raycastNpcs(const Eigen::Vector3f& rayOrigin, const Eigen::Vector3f& rayDir, float maxDistance = 100.0f);
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ namespace ZL {
|
||||
ScriptEngine::ScriptEngine() = default;
|
||||
ScriptEngine::~ScriptEngine() = default;
|
||||
|
||||
void ScriptEngine::init(Location* game, Inventory* inventory) {
|
||||
void ScriptEngine::init(Location* game, Inventory* inventory, const std::string& scriptPath) {
|
||||
impl = std::make_unique<Impl>();
|
||||
sol::state& lua = impl->lua;
|
||||
|
||||
@ -165,7 +165,7 @@ namespace ZL {
|
||||
<< npc->giftItem.name << std::endl;
|
||||
});
|
||||
|
||||
lua.script_file("resources/start.lua");
|
||||
lua.script_file(scriptPath);
|
||||
}
|
||||
|
||||
void ScriptEngine::callNpcInteractCallback(int npcIndex) {
|
||||
|
||||
@ -13,7 +13,7 @@ public:
|
||||
~ScriptEngine();
|
||||
|
||||
// Must be called once, after the Game's NPCs are ready.
|
||||
void init(Location* game, Inventory* inventory);
|
||||
void init(Location* game, Inventory* inventory, const std::string& scriptPath);
|
||||
|
||||
// Execute a Lua script file. Logs errors to stderr.
|
||||
void runScript(const std::string& path);
|
||||
|
||||
@ -9,8 +9,8 @@
|
||||
#include "../Character.h"
|
||||
namespace ZL {
|
||||
|
||||
void set_Texture(Character& npc, TextureDataStruct& texture);
|
||||
void set_Texture(Character& npc, const std::string& meshName, TextureDataStruct& texture);
|
||||
void set_Texture(Character& npc, const TextureDataStruct& texture);
|
||||
void set_Texture(Character& npc, const std::string& meshName, const TextureDataStruct& texture);
|
||||
|
||||
using json = nlohmann::json;
|
||||
|
||||
|
||||
@ -866,12 +866,10 @@ namespace ZL {
|
||||
auto shader = shaderManager.GetCurrentShader();
|
||||
if (shader->attribList.find(attribName) != shader->attribList.end())
|
||||
glVertexAttribPointer(shader->attribList[attribName], 2, GL_FLOAT, GL_FALSE, stride, pointer);
|
||||
|
||||
}
|
||||
|
||||
void Renderer::VertexAttribPointer3fv(const std::string& attribName, int stride, const char* pointer)
|
||||
{
|
||||
|
||||
auto shader = shaderManager.GetCurrentShader();
|
||||
if (shader->attribList.find(attribName) != shader->attribList.end())
|
||||
glVertexAttribPointer(shader->attribList[attribName], 3, GL_FLOAT, GL_FALSE, stride, pointer);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user