Merge branch 'salmon' of github.com:mephi1984/ZeptoLabTest1 into salmon

This commit is contained in:
Vladislav Khorev 2025-03-03 05:04:01 +03:00
commit 1632549b48
14 changed files with 9362 additions and 30 deletions

81
.vscode/settings.json vendored
View File

@ -1,31 +1,74 @@
{
"files.associations": {
"array": "cpp",
"atomic": "cpp",
"bit": "cpp",
"*.tcc": "cpp",
"bitset": "cpp",
"string_view": "cpp",
"hash_map": "cpp",
"hash_set": "cpp",
"initializer_list": "cpp",
"span": "cpp",
"regex": "cpp",
"valarray": "cpp",
"__hash_table": "cpp",
"__split_buffer": "cpp",
"__tree": "cpp",
"deque": "cpp",
"cctype": "cpp",
"charconv": "cpp",
"chrono": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"compare": "cpp",
"concepts": "cpp",
"condition_variable": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"forward_list": "cpp",
"list": "cpp",
"map": "cpp",
"queue": "cpp",
"set": "cpp",
"stack": "cpp",
"string": "cpp",
"unordered_map": "cpp",
"unordered_set": "cpp",
"vector": "cpp",
"chrono": "cpp",
"deque": "cpp",
"exception": "cpp",
"algorithm": "cpp",
"functional": "cpp",
"iterator": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"optional": "cpp",
"random": "cpp",
"ratio": "cpp",
"string_view": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"format": "cpp",
"initializer_list": "cpp",
"iomanip": "cpp",
"iosfwd": "cpp",
"istream": "cpp",
"limits": "cpp",
"mutex": "cpp",
"new": "cpp",
"ostream": "cpp",
"print": "cpp",
"span": "cpp",
"sstream": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"text_encoding": "cpp",
"typeindex": "cpp",
"thread": "cpp",
"cinttypes": "cpp",
"typeinfo": "cpp",
"*.inc": "cpp"
"variant": "cpp",
"__bit_reference": "cpp",
"__locale": "cpp",
"__split_buffer": "cpp",
"__verbose_abort": "cpp",
"execution": "cpp",
"ios": "cpp",
"locale": "cpp",
"queue": "cpp",
"stack": "cpp"
}
}

View File

@ -58,7 +58,7 @@ void GameObjectManager::initialize() {
loadingThread = std::thread([this]() {
preloadedRoomMeshArr.resize(2);
preloadedRoomMeshArr.resize(3);
preloadedRoomMeshArr[0] = ZL::LoadFromTextFile("./oneroom001.txt");
preloadedRoomMeshArr[0].Scale(10);
@ -69,6 +69,12 @@ void GameObjectManager::initialize() {
preloadedRoomMeshArr[1].Move(Vector3f{ 0, 93, 0 });
preloadedRoomMeshArr[2] = ZL::LoadFromTextFile("./thirdroom1.txt");
preloadedRoomMeshArr[2].Scale(10);
preloadedRoomMeshArr[2].Move(Vector3f{ 0, 93, 0 });
violaIdleModel.LoadFromFile("./idleviola_uv009.txt");
violaWalkModel.LoadFromFile("./walkviola_uv009.txt");
@ -93,7 +99,7 @@ void GameObjectManager::initialize() {
cubeForFirstRoomT.activeObjectMeshMutable.RefreshVBO();
cubeForFirstRoomT.objectPos = Vector3f{ -190, 90 , 280 };
cubeForFirstRoomT.activeObjectTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./Material_Base_color_1001-_2_.bmp"));
cubeForFirstRoomT.activeObjectScreenTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./aoscreen01.bmp"));
cubeForFirstRoomT.activeObjectScreenTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp32("./hand.bmp32"));
cubeForFirstRoomT.activeObjectScreenMesh = CreateRect2D({ 0.f, 0.f }, { 64.f, 64.f }, 0.5);
cubeForFirstRoomT.activeObjectScreenMeshMutable.AssignFrom(cubeForFirstRoomT.activeObjectScreenMesh);
cubeForFirstRoomT.activeObjectScreenMeshMutable.RefreshVBO();
@ -110,7 +116,7 @@ void GameObjectManager::initialize() {
cubeForFirstRoomO.activeObjectMeshMutable.RefreshVBO();
cubeForFirstRoomO.objectPos = Vector3f{ 185, 90 , -365 };
cubeForFirstRoomO.activeObjectTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./Material_Base_color_1001-_3.bmp"));
cubeForFirstRoomO.activeObjectScreenTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./aoscreen01.bmp"));
cubeForFirstRoomO.activeObjectScreenTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp32("./hand.bmp32"));
cubeForFirstRoomO.activeObjectScreenMesh = CreateRect2D({ 0.f, 0.f }, { 64.f, 64.f }, 0.5);
cubeForFirstRoomO.activeObjectScreenMeshMutable.AssignFrom(cubeForFirstRoomO.activeObjectScreenMesh);
cubeForFirstRoomO.activeObjectScreenMeshMutable.RefreshVBO();
@ -128,7 +134,7 @@ void GameObjectManager::initialize() {
cubeForFirstRoomM.activeObjectMeshMutable.RefreshVBO();
cubeForFirstRoomM.objectPos = Vector3f{ 200, 95 , 230 };
cubeForFirstRoomM.activeObjectTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./Material_Base_color_1001_4.bmp"));
cubeForFirstRoomM.activeObjectScreenTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./aoscreen01.bmp"));
cubeForFirstRoomM.activeObjectScreenTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp32("./hand.bmp32"));
cubeForFirstRoomM.activeObjectScreenMesh = CreateRect2D({ 0.f, 0.f }, { 64.f, 64.f }, 0.5);
cubeForFirstRoomM.activeObjectScreenMeshMutable.AssignFrom(cubeForFirstRoomO.activeObjectScreenMesh);
cubeForFirstRoomM.activeObjectScreenMeshMutable.RefreshVBO();
@ -142,7 +148,7 @@ void GameObjectManager::initialize() {
lampe.activeObjectMeshMutable.RefreshVBO();
lampe.objectPos = Vector3f{ 85, 30, 43 };
lampe.activeObjectTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./temno.bmp"));
lampe.activeObjectScreenTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./aoscreen01.bmp"));
lampe.activeObjectScreenTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp32("./hand.bmp32"));
lampe.activeObjectScreenMesh = CreateRect2D({ 0.f, 0.f }, { 64.f, 64.f }, 0.5);
lampe.activeObjectScreenMeshMutable.AssignFrom(lampe.activeObjectScreenMesh);
lampe.activeObjectScreenMeshMutable.RefreshVBO();
@ -158,13 +164,50 @@ void GameObjectManager::initialize() {
carToy.activeObjectMeshMutable.RefreshVBO();
carToy.objectPos = Vector3f{ 300, 0, 315 };
carToy.activeObjectTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./Material.001_Base_color_1001_5.bmp"));
carToy.activeObjectScreenTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./aoscreen01.bmp"));
carToy.activeObjectScreenTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp32("./hand.bmp32"));
carToy.activeObjectScreenMesh = CreateRect2D({ 0.f, 0.f }, { 64.f, 64.f }, 0.5);
carToy.activeObjectScreenMeshMutable.AssignFrom(carToy.activeObjectScreenMesh);
carToy.activeObjectScreenMeshMutable.RefreshVBO();
carToy.inventoryIconTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp32("./textures/inventory_objects/battery.bmp32"));
ActiveObject lock;
lock.name = "lock";
lock.activeObjectMesh = ZL::LoadFromTextFile("./lock.txt"); // Add ZL:: namespace
lock.activeObjectMesh.Scale(2);
lock.activeObjectMeshMutable.AssignFrom(lock.activeObjectMesh);
lock.activeObjectMeshMutable.RefreshVBO();
lock.objectPos = Vector3f{ 101, 100, 255 };
lock.activeObjectTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./Material.001_Base_color_1001_5.bmp"));
lock.activeObjectScreenTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./aoscreen01.bmp"));
lock.activeObjectScreenMesh = CreateRect2D({ 0.f, 0.f }, { 64.f, 64.f }, 0.5);
lock.activeObjectScreenMeshMutable.AssignFrom(lock.activeObjectScreenMesh);
lock.activeObjectScreenMeshMutable.RefreshVBO();
lock.inventoryIconTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp32("./textures/inventory_objects/battery.bmp32"));
ActiveObject door;
door.name = "door";
door.activeObjectMesh = ZL::LoadFromTextFile("./door.txt"); // Add ZL:: namespace
door.activeObjectMesh.Scale(60);
// cubeForFirstRoomO.activeObjectMesh.RotateByMatrix(QuatToMatrix(QuatFromRotateAroundZ(M_PI * 0.5)));
cubeForFirstRoomO.activeObjectMesh.RotateByMatrix(QuatToMatrix(QuatFromRotateAroundY(M_PI * 1.5)));
// cubeForFirstRoomO.activeObjectMesh.RotateByMatrix(QuatToMatrix(QuatFromRotateAroundX(M_PI * 0.5)));
door.activeObjectMeshMutable.AssignFrom(door.activeObjectMesh);
door.activeObjectMeshMutable.RefreshVBO();
door.objectPos = Vector3f{ -372, 10, 80 };
door.activeObjectTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./Material.001_Base_color_1001_5.bmp"));
door.activeObjectScreenTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24("./aoscreen01.bmp"));
door.activeObjectScreenMesh = CreateRect2D({ 0.f, 0.f }, { 64.f, 64.f }, 0.5);
door.activeObjectScreenMeshMutable.AssignFrom(door.activeObjectScreenMesh);
door.activeObjectScreenMeshMutable.RefreshVBO();
door.inventoryIconTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp32("./textures/inventory_objects/battery.bmp32"));
Room room_1;
room_1.roomTexture = std::make_shared<Texture>(CreateTextureDataFromBmp24("./Material_Base_color_1001.bmp"));
room_1.objects.push_back(cubeForFirstRoomT);
@ -203,6 +246,22 @@ void GameObjectManager::initialize() {
activeObjects = rooms[current_room_index].objects;
Room room_3;
room_3.roomTexture = std::make_shared<Texture>(CreateTextureDataFromBmp24("./photo_2025-03-03_07-51-53.bmp"));
room_3.sound_name = "unseen-danger-fss-no-copyright-music-252588--online-audio-convert.com.ogg";
room_3.objects.push_back(lock);
room_3.objects.push_back(door);
room_3.roomLogic = createRoom1Logic();
room_3.textMesh = preloadedRoomMeshArr[2];
room_3.textMeshMutable.AssignFrom(room_3.textMesh);
room_3.collisionMgr.setRoomBoundary(790, 790);
rooms.push_back(room_3);
activeObjects = rooms[current_room_index].objects;
// Initialize audio
/*
audioPlayer = std::make_unique<AudioPlayer>();
@ -282,6 +341,14 @@ void GameObjectManager::handleEvent(const SDL_Event& event) {
isDialogActive = false;
}
}
if (isBatteryDialogActive) {
BatteryDialogIndex++;
if (BatteryDialogIndex <= batteryDialogTextures.size()) {
batteryDialogTexturePtr = std::make_shared<Texture>(CreateTextureDataFromBmp24(batteryDialogTextures[BatteryDialogIndex]));
} else {
isBatteryDialogActive = false;
}
}
}
else if (event.type == SDL_MOUSEBUTTONDOWN) {
const auto highlightedObjects = rooms[current_room_index].findByHighlighted(true);
@ -323,12 +390,13 @@ void GameObjectManager::handleEvent(const SDL_Event& event) {
if (InventoryItem* item = GetItemSelected(true)){
std::cout << item->name << std::endl;
if (item->name == "carToy") {
std::cout << item->name << std::endl;
// Проверить, наведена ли мышь на лампу
const auto highlightedObjects = rooms[current_room_index].findByHighlighted(true);
std::cout << highlightedObjects.size() << std::endl;
for (auto* ao : highlightedObjects) {
if (ao && ao->name == "lampe") {
isBatteryDialogActive = true;
// Create a new lamp object with updated texture
ActiveObject updatedLamp = *ao;
// Change from dark to lit texture
@ -344,13 +412,22 @@ void GameObjectManager::handleEvent(const SDL_Event& event) {
objects_in_inventory--;
// Play sound effect
audioPlayerAsync.playSoundAsync("lamp_on.ogg");
// audioPlayerAsync.playSoundAsync("lamp_on.ogg");
AddItemToInventory(ao->name, ao->inventoryIconTexturePtr, objects_in_inventory+1);
objects_in_inventory++;
switch_room(2);
break;
}
}
}
}
}
else if (current_room_index==2) {
if (InventoryItem* item = GetItemSelected(true)){
}
}
}
else {
const auto highlightedObjects = rooms[current_room_index].findByHighlighted(true);
@ -362,6 +439,7 @@ void GameObjectManager::handleEvent(const SDL_Event& event) {
if (ao->name != "lampe") {
AddItemToInventory(ao->name, ao->inventoryIconTexturePtr, objects_in_inventory+1);
objects_in_inventory++;
rooms[current_room_index].removeByPtr(ao);
@ -468,7 +546,15 @@ void GameObjectManager::handleEvent(const SDL_Event& event) {
}
}
break;
// ...handle other keys...
case SDLK_RSHIFT:
case SDLK_LSHIFT: {
// Switch to next room
int nextRoom = current_room_index + 1;
if (nextRoom < rooms.size()) {
switch_room(nextRoom);
}
break;
}
}
}
else if (event.type == SDL_KEYUP) {

View File

@ -90,13 +90,21 @@ public:
ZL::VertexRenderStruct monsterScreenMeshMutable;
std::vector<std::string> dialogTextures = { // Список диалогов
"./start_dialog.bmp",
"./photo.bmp",
"./next_dialog.bmp",
"./final_dialog.bmp",
};
int dialogIndex = 0; // Текущий индекс диалога
std::shared_ptr<Texture> dialogTexturePtr; // Активная текстура диалога
bool isDialogActive = false; // Флаг активности диалога
std::vector<std::string> batteryDialogTextures = { // Список диалогов
"./battery_dialog.bmp",
};
int BatteryDialogIndex = 0; // Текущий индекс диалога
std::shared_ptr<Texture> batteryDialogTexturePtr; // Активная текстура диалога
bool isBatteryDialogActive = false; // Флаг активности диалога
private:
//int animationCounter = 0;
int lastMouseX = 0; // Добавляем переменные для хранения позиции мыши

View File

@ -222,12 +222,25 @@ void RenderSystem::drawUI(const GameObjectManager& gameObjects) {
float xPos = Environment::width / 2.0f - 250; // Центрируем
float yPos = Environment::height / 2.0f - 125; // Центрируем
renderer.TranslateMatrix(Vector3f{xPos, yPos, 0.0f});
renderer.ScaleMatrix(Vector3f{1.5f, 1.5f, 1.0f}); // Увеличиваем размер
renderer.ScaleMatrix(Vector3f{10.5f, 10.5f, 1.0f}); // Увеличиваем размер
glBindTexture(GL_TEXTURE_2D, gameObjects.dialogTexturePtr->getTexID());
renderer.DrawVertexRenderStruct(gameObjects.inventoryIconMeshMutable); // Используем 2D меш инвентаря
renderer.PopMatrix();
}
// Отрисовка диалогового окна батарейки
if (gameObjects.isBatteryDialogActive && gameObjects.batteryDialogTexturePtr) {
renderer.PushMatrix();
float xPos = Environment::width / 2.0f - 250; // Центрируем
float yPos = Environment::height / 2.0f - 125; // Центрируем
renderer.TranslateMatrix(Vector3f{xPos, yPos, 0.0f});
renderer.ScaleMatrix(Vector3f{10.5f, 10.5f, 1.0f}); // Увеличиваем размер
glBindTexture(GL_TEXTURE_2D, gameObjects.batteryDialogTexturePtr->getTexID());
renderer.DrawVertexRenderStruct(gameObjects.inventoryIconMeshMutable); // Используем 2D меш инвентаря
renderer.PopMatrix();
}
//for (const auto* ao : gameObjects.aoMgr.findByHighlighted(true)) {
for (auto& ao : gameObjects.rooms[gameObjects.current_room_index].findByHighlighted(true)) {
std::cout << ao->name << std::endl;

BIN
battery_dialog.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 MiB

93
door.txt Normal file
View File

@ -0,0 +1,93 @@
===Vertices: 8
Vertex 0: <Vector (-1.0000, -1.0000, -1.0000)>
Vertex 1: <Vector (-1.0000, -1.3082, 2.8700)>
Vertex 2: <Vector (-1.0000, 1.0000, -1.0000)>
Vertex 3: <Vector (-1.0000, 1.0000, 3.2248)>
Vertex 4: <Vector (-0.3594, -1.0000, -1.0000)>
Vertex 5: <Vector (-0.3594, -1.3082, 2.8700)>
Vertex 6: <Vector (-0.3594, 1.0000, -1.0000)>
Vertex 7: <Vector (-0.3594, 1.0000, 3.2248)>
===UV Coordinates:
Face count: 12
Face 0
UV Count: 3
UV <Vector (0.3708, 0.0570)>
UV <Vector (0.7416, 0.6787)>
UV <Vector (0.4203, 0.6787)>
Face 1
UV Count: 3
UV <Vector (0.7416, -0.0000)>
UV <Vector (0.8445, 0.6787)>
UV <Vector (0.7416, 0.6787)>
Face 2
UV Count: 3
UV <Vector (-0.0000, 0.6787)>
UV <Vector (0.3708, 0.0570)>
UV <Vector (0.3213, 0.6787)>
Face 3
UV Count: 3
UV <Vector (0.8445, -0.0000)>
UV <Vector (0.9474, 0.6237)>
UV <Vector (0.8445, 0.6237)>
Face 4
UV Count: 3
UV <Vector (0.0000, 1.0000)>
UV <Vector (0.1029, 0.6787)>
UV <Vector (0.1029, 1.0000)>
Face 5
UV Count: 3
UV <Vector (0.9474, 0.6237)>
UV <Vector (0.8445, 0.9988)>
UV <Vector (0.8445, 0.6237)>
Face 6
UV Count: 3
UV <Vector (0.3708, 0.0570)>
UV <Vector (0.7416, -0.0000)>
UV <Vector (0.7416, 0.6787)>
Face 7
UV Count: 3
UV <Vector (0.7416, -0.0000)>
UV <Vector (0.8445, -0.0000)>
UV <Vector (0.8445, 0.6787)>
Face 8
UV Count: 3
UV <Vector (-0.0000, 0.6787)>
UV <Vector (0.0000, 0.0000)>
UV <Vector (0.3708, 0.0570)>
Face 9
UV Count: 3
UV <Vector (0.8445, -0.0000)>
UV <Vector (0.9474, 0.0000)>
UV <Vector (0.9474, 0.6237)>
Face 10
UV Count: 3
UV <Vector (0.0000, 1.0000)>
UV <Vector (0.0000, 0.6787)>
UV <Vector (0.1029, 0.6787)>
Face 11
UV Count: 3
UV <Vector (0.9474, 0.6237)>
UV <Vector (0.9474, 0.9988)>
UV <Vector (0.8445, 0.9988)>
===Normals:
Vertex 0: Normal <Vector (-0.5816, -0.5519, -0.5976)>
Vertex 1: Normal <Vector (-0.5813, -0.6381, 0.5049)>
Vertex 2: Normal <Vector (-0.5773, 0.5774, -0.5774)>
Vertex 3: Normal <Vector (-0.5698, 0.5352, 0.6237)>
Vertex 4: Normal <Vector (0.5816, -0.5519, -0.5976)>
Vertex 5: Normal <Vector (0.5813, -0.6381, 0.5049)>
Vertex 6: Normal <Vector (0.5774, 0.5774, -0.5773)>
Vertex 7: Normal <Vector (0.5698, 0.5351, 0.6237)>
===Triangles: 12
Triangle: [1, 2, 0]
Triangle: [3, 6, 2]
Triangle: [6, 5, 4]
Triangle: [5, 0, 4]
Triangle: [6, 0, 2]
Triangle: [3, 5, 7]
Triangle: [1, 3, 2]
Triangle: [3, 7, 6]
Triangle: [6, 7, 5]
Triangle: [5, 1, 0]
Triangle: [6, 4, 0]
Triangle: [3, 1, 5]

BIN
final_dialog.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 MiB

BIN
hand.bmp32 Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 MiB

559
lock.txt Normal file
View File

@ -0,0 +1,559 @@
===Vertices: 43
Vertex 0: <Vector (-0.0002, 4.1693, -1.1602)>
Vertex 1: <Vector (-0.0002, 4.1693, 0.8398)>
Vertex 2: <Vector (0.9508, 3.4783, -1.1602)>
Vertex 3: <Vector (0.9508, 3.4783, 0.8398)>
Vertex 4: <Vector (0.5875, 2.3603, -1.1602)>
Vertex 5: <Vector (0.5875, 2.3603, 0.8398)>
Vertex 6: <Vector (-0.5880, 2.3603, -1.1602)>
Vertex 7: <Vector (-0.5880, 2.3603, 0.8398)>
Vertex 8: <Vector (-0.9513, 3.4783, -1.1602)>
Vertex 9: <Vector (-0.9513, 3.4783, 0.8398)>
Vertex 10: <Vector (0.5871, -2.3745, -1.1602)>
Vertex 11: <Vector (0.5871, -2.3745, 0.8398)>
Vertex 12: <Vector (0.9510, -3.4923, -1.1602)>
Vertex 13: <Vector (0.9510, -3.4923, 0.8398)>
Vertex 14: <Vector (0.0003, -4.1838, -1.1602)>
Vertex 15: <Vector (0.0003, -4.1838, 0.8398)>
Vertex 16: <Vector (-0.9511, -3.4933, -1.1602)>
Vertex 17: <Vector (-0.9511, -3.4933, 0.8398)>
Vertex 18: <Vector (-0.5884, -2.3751, -1.1602)>
Vertex 19: <Vector (-0.5884, -2.3751, 0.8398)>
Vertex 20: <Vector (-0.5881, 1.3244, 2.2781)>
Vertex 21: <Vector (-0.5882, -0.0074, 2.7576)>
Vertex 22: <Vector (-0.5884, -1.3392, 2.2781)>
Vertex 23: <Vector (0.5875, 1.3246, 2.2779)>
Vertex 24: <Vector (0.5873, -0.0071, 2.7573)>
Vertex 25: <Vector (0.5872, -1.3387, 2.2779)>
Vertex 26: <Vector (-0.9513, 1.9533, 2.9574)>
Vertex 27: <Vector (-0.9512, -0.0075, 3.6633)>
Vertex 28: <Vector (-0.9512, -1.9682, 2.9574)>
Vertex 29: <Vector (-0.0001, 2.3421, 3.3770)>
Vertex 30: <Vector (0.0000, -0.0072, 4.2228)>
Vertex 31: <Vector (0.0002, -2.3565, 3.3770)>
Vertex 32: <Vector (0.9509, 1.9535, 2.9571)>
Vertex 33: <Vector (0.9509, -0.0070, 3.6629)>
Vertex 34: <Vector (0.9509, -1.9675, 2.9571)>
Vertex 35: <Vector (-1.4333, -3.8304, -9.3966)>
Vertex 36: <Vector (-1.4333, -4.5015, -0.9919)>
Vertex 37: <Vector (-1.4333, 3.8841, -9.3966)>
Vertex 38: <Vector (-1.4333, 4.5742, -0.9919)>
Vertex 39: <Vector (1.4353, -3.8304, -9.3966)>
Vertex 40: <Vector (1.4353, -4.5015, -0.9919)>
Vertex 41: <Vector (1.4353, 3.8841, -9.3966)>
Vertex 42: <Vector (1.4353, 4.5742, -0.9919)>
===UV Coordinates:
Face count: 78
Face 0
UV Count: 3
UV <Vector (0.8193, 0.8359)>
UV <Vector (0.8638, 0.9308)>
UV <Vector (0.8193, 0.9294)>
Face 1
UV Count: 3
UV <Vector (0.8699, 0.0000)>
UV <Vector (0.7747, 0.0523)>
UV <Vector (0.7777, 0.0000)>
Face 2
UV Count: 3
UV <Vector (0.3621, 0.6569)>
UV <Vector (0.4171, 0.7504)>
UV <Vector (0.3621, 0.7504)>
Face 3
UV Count: 3
UV <Vector (0.0922, 0.6989)>
UV <Vector (0.0030, 0.7512)>
UV <Vector (0.0000, 0.6989)>
Face 4
UV Count: 3
UV <Vector (0.7747, 0.8372)>
UV <Vector (0.8193, 0.9294)>
UV <Vector (0.7747, 0.9308)>
Face 5
UV Count: 3
UV <Vector (0.0847, 0.7682)>
UV <Vector (0.1370, 0.7512)>
UV <Vector (0.1694, 0.7957)>
Face 6
UV Count: 3
UV <Vector (0.8669, 0.2740)>
UV <Vector (0.7777, 0.3263)>
UV <Vector (0.7747, 0.2740)>
Face 7
UV Count: 3
UV <Vector (0.4171, 0.7614)>
UV <Vector (0.4616, 0.8536)>
UV <Vector (0.4171, 0.8549)>
Face 8
UV Count: 3
UV <Vector (0.4616, 0.7601)>
UV <Vector (0.5062, 0.8549)>
UV <Vector (0.4616, 0.8536)>
Face 9
UV Count: 3
UV <Vector (0.0951, 0.4248)>
UV <Vector (0.0000, 0.4772)>
UV <Vector (0.0030, 0.4248)>
Face 10
UV Count: 3
UV <Vector (0.3621, 0.4941)>
UV <Vector (0.4171, 0.5876)>
UV <Vector (0.3621, 0.5877)>
Face 11
UV Count: 3
UV <Vector (0.0323, 0.7512)>
UV <Vector (0.0847, 0.8232)>
UV <Vector (0.0323, 0.8402)>
Face 12
UV Count: 3
UV <Vector (0.4171, 0.6569)>
UV <Vector (0.3621, 0.5877)>
UV <Vector (0.4171, 0.5877)>
Face 13
UV Count: 3
UV <Vector (0.4171, 0.8751)>
UV <Vector (0.3621, 0.8128)>
UV <Vector (0.4171, 0.8128)>
Face 14
UV Count: 3
UV <Vector (0.4171, 0.8128)>
UV <Vector (0.3621, 0.7504)>
UV <Vector (0.4171, 0.7504)>
Face 15
UV Count: 3
UV <Vector (0.3621, 0.4248)>
UV <Vector (0.4171, 0.4941)>
UV <Vector (0.3621, 0.4941)>
Face 16
UV Count: 3
UV <Vector (0.7747, 0.8372)>
UV <Vector (0.8193, 0.7207)>
UV <Vector (0.8193, 0.8359)>
Face 17
UV Count: 3
UV <Vector (0.4171, 0.6266)>
UV <Vector (0.4617, 0.5348)>
UV <Vector (0.4617, 0.6448)>
Face 18
UV Count: 3
UV <Vector (0.4171, 0.4430)>
UV <Vector (0.4617, 0.5348)>
UV <Vector (0.4171, 0.5348)>
Face 19
UV Count: 3
UV <Vector (0.5062, 0.7614)>
UV <Vector (0.4616, 0.6448)>
UV <Vector (0.5062, 0.6651)>
Face 20
UV Count: 3
UV <Vector (0.8193, 0.7207)>
UV <Vector (0.8638, 0.8372)>
UV <Vector (0.8193, 0.8359)>
Face 21
UV Count: 3
UV <Vector (0.4617, 0.5348)>
UV <Vector (0.5062, 0.6266)>
UV <Vector (0.4617, 0.6448)>
Face 22
UV Count: 3
UV <Vector (0.4617, 0.5348)>
UV <Vector (0.5062, 0.4431)>
UV <Vector (0.5062, 0.5348)>
Face 23
UV Count: 3
UV <Vector (0.4616, 0.6448)>
UV <Vector (0.4171, 0.7614)>
UV <Vector (0.4171, 0.6652)>
Face 24
UV Count: 3
UV <Vector (0.1928, 0.6798)>
UV <Vector (0.0922, 0.6989)>
UV <Vector (0.1585, 0.6504)>
Face 25
UV Count: 3
UV <Vector (0.2253, 0.5880)>
UV <Vector (0.1585, 0.6504)>
UV <Vector (0.1806, 0.5880)>
Face 26
UV Count: 3
UV <Vector (0.2253, 0.5880)>
UV <Vector (0.1585, 0.5257)>
UV <Vector (0.1928, 0.4962)>
Face 27
UV Count: 3
UV <Vector (0.1928, 0.4962)>
UV <Vector (0.0922, 0.4772)>
UV <Vector (0.0951, 0.4248)>
Face 28
UV Count: 3
UV <Vector (0.8669, 0.0523)>
UV <Vector (0.9675, 0.0714)>
UV <Vector (0.9332, 0.1008)>
Face 29
UV Count: 3
UV <Vector (0.9332, 0.1008)>
UV <Vector (1.0000, 0.1631)>
UV <Vector (0.9553, 0.1632)>
Face 30
UV Count: 3
UV <Vector (0.9332, 0.2255)>
UV <Vector (1.0000, 0.1631)>
UV <Vector (0.9675, 0.2549)>
Face 31
UV Count: 3
UV <Vector (0.8669, 0.2740)>
UV <Vector (0.9675, 0.2549)>
UV <Vector (0.8699, 0.3263)>
Face 32
UV Count: 3
UV <Vector (0.3874, -0.0000)>
UV <Vector (0.0000, 0.3925)>
UV <Vector (0.0000, 0.0314)>
Face 33
UV Count: 3
UV <Vector (0.7747, 0.3263)>
UV <Vector (0.9090, 0.7207)>
UV <Vector (0.7747, 0.7207)>
Face 34
UV Count: 3
UV <Vector (0.3874, 0.0323)>
UV <Vector (0.7747, 0.4248)>
UV <Vector (0.3874, 0.3934)>
Face 35
UV Count: 3
UV <Vector (0.6404, 0.4248)>
UV <Vector (0.7747, 0.8192)>
UV <Vector (0.6404, 0.8192)>
Face 36
UV Count: 3
UV <Vector (0.5062, 0.7860)>
UV <Vector (0.6404, 0.4248)>
UV <Vector (0.6404, 0.7860)>
Face 37
UV Count: 3
UV <Vector (0.2253, 0.8497)>
UV <Vector (0.3596, 0.4248)>
UV <Vector (0.3596, 0.8497)>
Face 38
UV Count: 3
UV <Vector (0.8193, 0.8359)>
UV <Vector (0.8638, 0.8372)>
UV <Vector (0.8638, 0.9308)>
Face 39
UV Count: 3
UV <Vector (0.8699, 0.0000)>
UV <Vector (0.8669, 0.0523)>
UV <Vector (0.7747, 0.0523)>
Face 40
UV Count: 3
UV <Vector (0.3621, 0.6569)>
UV <Vector (0.4171, 0.6569)>
UV <Vector (0.4171, 0.7504)>
Face 41
UV Count: 3
UV <Vector (0.0922, 0.6989)>
UV <Vector (0.0952, 0.7512)>
UV <Vector (0.0030, 0.7512)>
Face 42
UV Count: 3
UV <Vector (0.7747, 0.8372)>
UV <Vector (0.8193, 0.8359)>
UV <Vector (0.8193, 0.9294)>
Face 43
UV Count: 3
UV <Vector (0.1370, 0.8402)>
UV <Vector (0.0847, 0.8232)>
UV <Vector (0.1694, 0.7957)>
Face 44
UV Count: 3
UV <Vector (0.0847, 0.8232)>
UV <Vector (0.0847, 0.7682)>
UV <Vector (0.1694, 0.7957)>
Face 45
UV Count: 3
UV <Vector (0.8669, 0.2740)>
UV <Vector (0.8699, 0.3263)>
UV <Vector (0.7777, 0.3263)>
Face 46
UV Count: 3
UV <Vector (0.4171, 0.7614)>
UV <Vector (0.4616, 0.7601)>
UV <Vector (0.4616, 0.8536)>
Face 47
UV Count: 3
UV <Vector (0.4616, 0.7601)>
UV <Vector (0.5062, 0.7614)>
UV <Vector (0.5062, 0.8549)>
Face 48
UV Count: 3
UV <Vector (0.0951, 0.4248)>
UV <Vector (0.0922, 0.4772)>
UV <Vector (0.0000, 0.4772)>
Face 49
UV Count: 3
UV <Vector (0.3621, 0.4941)>
UV <Vector (0.4171, 0.4941)>
UV <Vector (0.4171, 0.5876)>
Face 50
UV Count: 3
UV <Vector (0.0323, 0.8402)>
UV <Vector (-0.0000, 0.7957)>
UV <Vector (0.0323, 0.7512)>
Face 51
UV Count: 3
UV <Vector (0.0323, 0.7512)>
UV <Vector (0.0847, 0.7682)>
UV <Vector (0.0847, 0.8232)>
Face 52
UV Count: 3
UV <Vector (0.4171, 0.6569)>
UV <Vector (0.3621, 0.6569)>
UV <Vector (0.3621, 0.5877)>
Face 53
UV Count: 3
UV <Vector (0.4171, 0.8751)>
UV <Vector (0.3621, 0.8751)>
UV <Vector (0.3621, 0.8128)>
Face 54
UV Count: 3
UV <Vector (0.4171, 0.8128)>
UV <Vector (0.3621, 0.8128)>
UV <Vector (0.3621, 0.7504)>
Face 55
UV Count: 3
UV <Vector (0.3621, 0.4248)>
UV <Vector (0.4171, 0.4248)>
UV <Vector (0.4171, 0.4941)>
Face 56
UV Count: 3
UV <Vector (0.7747, 0.8372)>
UV <Vector (0.7747, 0.7411)>
UV <Vector (0.8193, 0.7207)>
Face 57
UV Count: 3
UV <Vector (0.4171, 0.6266)>
UV <Vector (0.4171, 0.5348)>
UV <Vector (0.4617, 0.5348)>
Face 58
UV Count: 3
UV <Vector (0.4171, 0.4430)>
UV <Vector (0.4617, 0.4248)>
UV <Vector (0.4617, 0.5348)>
Face 59
UV Count: 3
UV <Vector (0.5062, 0.7614)>
UV <Vector (0.4616, 0.7601)>
UV <Vector (0.4616, 0.6448)>
Face 60
UV Count: 3
UV <Vector (0.8193, 0.7207)>
UV <Vector (0.8638, 0.7411)>
UV <Vector (0.8638, 0.8372)>
Face 61
UV Count: 3
UV <Vector (0.4617, 0.5348)>
UV <Vector (0.5062, 0.5348)>
UV <Vector (0.5062, 0.6266)>
Face 62
UV Count: 3
UV <Vector (0.4617, 0.5348)>
UV <Vector (0.4617, 0.4248)>
UV <Vector (0.5062, 0.4431)>
Face 63
UV Count: 3
UV <Vector (0.4616, 0.6448)>
UV <Vector (0.4616, 0.7601)>
UV <Vector (0.4171, 0.7614)>
Face 64
UV Count: 3
UV <Vector (0.1928, 0.6798)>
UV <Vector (0.0952, 0.7512)>
UV <Vector (0.0922, 0.6989)>
Face 65
UV Count: 3
UV <Vector (0.2253, 0.5880)>
UV <Vector (0.1928, 0.6798)>
UV <Vector (0.1585, 0.6504)>
Face 66
UV Count: 3
UV <Vector (0.2253, 0.5880)>
UV <Vector (0.1806, 0.5880)>
UV <Vector (0.1585, 0.5257)>
Face 67
UV Count: 3
UV <Vector (0.1928, 0.4962)>
UV <Vector (0.1585, 0.5257)>
UV <Vector (0.0922, 0.4772)>
Face 68
UV Count: 3
UV <Vector (0.8669, 0.0523)>
UV <Vector (0.8699, 0.0000)>
UV <Vector (0.9675, 0.0714)>
Face 69
UV Count: 3
UV <Vector (0.9332, 0.1008)>
UV <Vector (0.9675, 0.0714)>
UV <Vector (1.0000, 0.1631)>
Face 70
UV Count: 3
UV <Vector (0.9332, 0.2255)>
UV <Vector (0.9553, 0.1632)>
UV <Vector (1.0000, 0.1631)>
Face 71
UV Count: 3
UV <Vector (0.8669, 0.2740)>
UV <Vector (0.9332, 0.2255)>
UV <Vector (0.9675, 0.2549)>
Face 72
UV Count: 3
UV <Vector (0.3874, -0.0000)>
UV <Vector (0.3874, 0.4248)>
UV <Vector (0.0000, 0.3925)>
Face 73
UV Count: 3
UV <Vector (0.7747, 0.3263)>
UV <Vector (0.9090, 0.3263)>
UV <Vector (0.9090, 0.7207)>
Face 74
UV Count: 3
UV <Vector (0.3874, 0.0323)>
UV <Vector (0.7747, 0.0000)>
UV <Vector (0.7747, 0.4248)>
Face 75
UV Count: 3
UV <Vector (0.6404, 0.4248)>
UV <Vector (0.7747, 0.4248)>
UV <Vector (0.7747, 0.8192)>
Face 76
UV Count: 3
UV <Vector (0.5062, 0.7860)>
UV <Vector (0.5062, 0.4248)>
UV <Vector (0.6404, 0.4248)>
Face 77
UV Count: 3
UV <Vector (0.2253, 0.8497)>
UV <Vector (0.2253, 0.4248)>
UV <Vector (0.3596, 0.4248)>
===Normals:
Vertex 0: Normal <Vector (0.0000, 0.8032, -0.5957)>
Vertex 1: Normal <Vector (-0.0000, 0.9606, 0.2778)>
Vertex 2: Normal <Vector (0.7639, 0.2482, -0.5957)>
Vertex 3: Normal <Vector (0.9084, 0.3867, 0.1591)>
Vertex 4: Normal <Vector (0.4721, -0.6498, -0.5957)>
Vertex 5: Normal <Vector (0.6386, -0.7267, -0.2531)>
Vertex 6: Normal <Vector (-0.4721, -0.6498, -0.5957)>
Vertex 7: Normal <Vector (-0.6386, -0.7267, -0.2531)>
Vertex 8: Normal <Vector (-0.7639, 0.2482, -0.5957)>
Vertex 9: Normal <Vector (-0.9084, 0.3867, 0.1591)>
Vertex 10: Normal <Vector (0.4718, 0.6501, -0.5957)>
Vertex 11: Normal <Vector (0.6381, 0.7271, -0.2533)>
Vertex 12: Normal <Vector (0.7640, -0.2478, -0.5957)>
Vertex 13: Normal <Vector (0.9086, -0.3863, 0.1590)>
Vertex 14: Normal <Vector (0.0004, -0.8032, -0.5957)>
Vertex 15: Normal <Vector (0.0005, -0.9606, 0.2778)>
Vertex 16: Normal <Vector (-0.7638, -0.2486, -0.5957)>
Vertex 17: Normal <Vector (-0.9082, -0.3872, 0.1592)>
Vertex 18: Normal <Vector (-0.4725, 0.6496, -0.5957)>
Vertex 19: Normal <Vector (-0.6390, 0.7264, -0.2530)>
Vertex 20: Normal <Vector (-0.6177, -0.4688, -0.6314)>
Vertex 21: Normal <Vector (-0.6246, 0.0001, -0.7809)>
Vertex 22: Normal <Vector (-0.6180, 0.4687, -0.6312)>
Vertex 23: Normal <Vector (0.6175, -0.4689, -0.6315)>
Vertex 24: Normal <Vector (0.6242, -0.0001, -0.7813)>
Vertex 25: Normal <Vector (0.6173, 0.4690, -0.6317)>
Vertex 26: Normal <Vector (-0.9056, 0.2472, 0.3447)>
Vertex 27: Normal <Vector (-0.8986, -0.0000, 0.4387)>
Vertex 28: Normal <Vector (-0.9055, -0.2474, 0.3449)>
Vertex 29: Normal <Vector (0.0001, 0.6089, 0.7932)>
Vertex 30: Normal <Vector (0.0002, -0.0000, 1.0000)>
Vertex 31: Normal <Vector (0.0004, -0.6089, 0.7932)>
Vertex 32: Normal <Vector (0.9057, 0.2471, 0.3445)>
Vertex 33: Normal <Vector (0.8989, 0.0000, 0.4382)>
Vertex 34: Normal <Vector (0.9058, -0.2469, 0.3443)>
Vertex 35: Normal <Vector (-0.5817, -0.5518, -0.5976)>
Vertex 36: Normal <Vector (-0.5733, -0.6020, 0.5558)>
Vertex 37: Normal <Vector (-0.5818, 0.5511, -0.5982)>
Vertex 38: Normal <Vector (-0.5732, 0.6027, 0.5552)>
Vertex 39: Normal <Vector (0.5816, -0.5518, -0.5976)>
Vertex 40: Normal <Vector (0.5733, -0.6020, 0.5558)>
Vertex 41: Normal <Vector (0.5818, 0.5511, -0.5982)>
Vertex 42: Normal <Vector (0.5732, 0.6027, 0.5552)>
===Triangles: 78
Triangle: [1, 2, 0]
Triangle: [3, 4, 2]
Triangle: [5, 6, 4]
Triangle: [7, 8, 6]
Triangle: [9, 0, 8]
Triangle: [2, 4, 6]
Triangle: [11, 12, 10]
Triangle: [13, 14, 12]
Triangle: [15, 16, 14]
Triangle: [17, 18, 16]
Triangle: [19, 10, 18]
Triangle: [12, 16, 18]
Triangle: [7, 23, 20]
Triangle: [20, 24, 21]
Triangle: [21, 25, 22]
Triangle: [22, 11, 19]
Triangle: [9, 29, 1]
Triangle: [26, 30, 29]
Triangle: [28, 30, 27]
Triangle: [17, 31, 28]
Triangle: [29, 3, 1]
Triangle: [30, 32, 29]
Triangle: [30, 34, 33]
Triangle: [31, 13, 34]
Triangle: [26, 7, 20]
Triangle: [27, 20, 21]
Triangle: [27, 22, 28]
Triangle: [28, 19, 17]
Triangle: [5, 32, 23]
Triangle: [23, 33, 24]
Triangle: [25, 33, 34]
Triangle: [11, 34, 13]
Triangle: [36, 37, 35]
Triangle: [38, 41, 37]
Triangle: [41, 40, 39]
Triangle: [40, 35, 39]
Triangle: [41, 35, 37]
Triangle: [38, 40, 42]
Triangle: [1, 3, 2]
Triangle: [3, 5, 4]
Triangle: [5, 7, 6]
Triangle: [7, 9, 8]
Triangle: [9, 1, 0]
Triangle: [8, 0, 6]
Triangle: [0, 2, 6]
Triangle: [11, 13, 12]
Triangle: [13, 15, 14]
Triangle: [15, 17, 16]
Triangle: [17, 19, 18]
Triangle: [19, 11, 10]
Triangle: [18, 10, 12]
Triangle: [12, 14, 16]
Triangle: [7, 5, 23]
Triangle: [20, 23, 24]
Triangle: [21, 24, 25]
Triangle: [22, 25, 11]
Triangle: [9, 26, 29]
Triangle: [26, 27, 30]
Triangle: [28, 31, 30]
Triangle: [17, 15, 31]
Triangle: [29, 32, 3]
Triangle: [30, 33, 32]
Triangle: [30, 31, 34]
Triangle: [31, 15, 13]
Triangle: [26, 9, 7]
Triangle: [27, 26, 20]
Triangle: [27, 21, 22]
Triangle: [28, 22, 19]
Triangle: [5, 3, 32]
Triangle: [23, 32, 33]
Triangle: [25, 24, 33]
Triangle: [11, 25, 34]
Triangle: [36, 38, 37]
Triangle: [38, 42, 41]
Triangle: [41, 42, 40]
Triangle: [40, 36, 35]
Triangle: [41, 39, 35]
Triangle: [38, 36, 40]

BIN
photo.bmp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 MiB

After

Width:  |  Height:  |  Size: 6.3 MiB

4265
thirdroom.txt Normal file

File diff suppressed because it is too large Load Diff

4265
thirdroom1.txt Normal file

File diff suppressed because it is too large Load Diff