Добавить в корзинуПозвонить
Найти в Дзене

Программа для 3D визуализации дома - самостоятельно написать

Вот пример программы для 3D визуализации дома с использованием Python и библиотеки PyGame (с OpenGL): python import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
def draw_floor():
"""Отрисовка пола"""
glBegin(GL_QUADS)
glColor3f(0.8, 0.8, 0.8) # Серый цвет
glVertex3f(-2, 0, -2)
glVertex3f(2, 0, -2)
glVertex3f(2, 0, 2)
glVertex3f(-2, 0, 2)
glEnd()
def draw_walls():
"""Отрисовка стен дома"""
# Передняя стена
glBegin(GL_QUADS)
glColor3f(0.9, 0.7, 0.5) # Бежевый
glVertex3f(-1, 0, -1)
glVertex3f(1, 0, -1)
glVertex3f(1, 1, -1)
glVertex3f(-1, 1, -1)
glEnd()
# Задняя стена
glBegin(GL_QUADS)
glColor3f(0.9, 0.7, 0.5)
glVertex3f(-1, 0, 1)
glVertex3f(1, 0, 1)
glVertex3f(1, 1, 1)
glVertex3f(-1, 1, 1)
glEnd()
# Левая стена
glBegin(GL_QUADS)
glColor3f(0.8, 0.6, 0.4)
glVertex3f(-1, 0, -1)
glVertex3f(-1, 0, 1)
glVertex3f(-1, 1, 1
Оглавление

Вот пример программы для 3D визуализации дома с использованием Python и библиотеки PyGame (с OpenGL):

python

import pygame
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *

def draw_floor():
"""Отрисовка пола"""
glBegin(GL_QUADS)
glColor3f(0.8, 0.8, 0.8)
# Серый цвет
glVertex3f(-2, 0, -2)
glVertex3f(2, 0, -2)
glVertex3f(2, 0, 2)
glVertex3f(-2, 0, 2)
glEnd()

def draw_walls():
"""Отрисовка стен дома"""
# Передняя стена
glBegin(GL_QUADS)
glColor3f(0.9, 0.7, 0.5)
# Бежевый
glVertex3f(-1, 0, -1)
glVertex3f(1, 0, -1)
glVertex3f(1, 1, -1)
glVertex3f(-1, 1, -1)
glEnd()

# Задняя стена
glBegin(GL_QUADS)
glColor3f(0.9, 0.7, 0.5)
glVertex3f(-1, 0, 1)
glVertex3f(1, 0, 1)
glVertex3f(1, 1, 1)
glVertex3f(-1, 1, 1)
glEnd()

# Левая стена
glBegin(GL_QUADS)
glColor3f(0.8, 0.6, 0.4)
glVertex3f(-1, 0, -1)
glVertex3f(-1, 0, 1)
glVertex3f(-1, 1, 1)
glVertex3f(-1, 1, -1)
glEnd()

# Правая стена
glBegin(GL_QUADS)
glColor3f(0.8, 0.6, 0.4)
glVertex3f(1, 0, -1)
glVertex3f(1, 0, 1)
glVertex3f(1, 1, 1)
glVertex3f(1, 1, -1)
glEnd()

def draw_roof():
"""Отрисовка крыши"""
glBegin(GL_TRIANGLES)
glColor3f(0.7, 0.1, 0.1)
# Красный
# Передняя часть крыши
glVertex3f(-1.2, 1, -1)
glVertex3f(0, 1.8, -1)
glVertex3f(1.2, 1, -1)
glEnd()

glBegin(GL_TRIANGLES)
# Задняя часть крыши
glVertex3f(-1.2, 1, 1)
glVertex3f(0, 1.8, 1)
glVertex3f(1.2, 1, 1)
glEnd()

# Боковые части крыши
glBegin(GL_QUADS)
glColor3f(0.6, 0.1, 0.1)
# Темно-красный
glVertex3f(-1.2, 1, -1)
glVertex3f(-1.2, 1, 1)
glVertex3f(0, 1.8, 1)
glVertex3f(0, 1.8, -1)

glVertex3f(1.2, 1, -1)
glVertex3f(1.2, 1, 1)
glVertex3f(0, 1.8, 1)
glVertex3f(0, 1.8, -1)
glEnd()

def draw_door():
"""Отрисовка двери"""
glBegin(GL_QUADS)
glColor3f(0.4, 0.2, 0.0)
# Коричневый
glVertex3f(-0.2, 0, -1.01)
glVertex3f(0.2, 0, -1.01)
glVertex3f(0.2, 0.6, -1.01)
glVertex3f(-0.2, 0.6, -1.01)
glEnd()

def main():
pygame.init()
display = (800, 600)
pygame.display.set_mode(display, DOUBLEBUF | OPENGL)
pygame.display.set_caption("3D Визуализация Дома")

gluPerspective(45, (display[0]/display[1]), 0.1, 50.0)
glTranslatef(0.0, -0.5, -5)
glRotatef(25, 1, 0, 0)

# Настройки освещения
glEnable(GL_DEPTH_TEST)
glEnable(GL_LIGHTING)
glEnable(GL_LIGHT0)
glLightfv(GL_LIGHT0, GL_POSITION, [0, 5, 5, 1])
glLightfv(GL_LIGHT0, GL_DIFFUSE, [1.0, 1.0, 1.0, 1.0])
glMaterialfv(GL_FRONT, GL_DIFFUSE, [0.7, 0.7, 0.7, 1.0])

while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
glRotatef(5, 0, 1, 0)
if event.key == pygame.K_RIGHT:
glRotatef(-5, 0, 1, 0)
if event.key == pygame.K_UP:
glRotatef(5, 1, 0, 0)
if event.key == pygame.K_DOWN:
glRotatef(-5, 1, 0, 0)
elif event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 4:
# Колесо вверх
glTranslatef(0, 0, 0.5)
elif event.button == 5:
# Колесо вниз
glTranslatef(0, 0, -0.5)

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
draw_floor()
draw_walls()
draw_roof()
draw_door()
pygame.display.flip()
pygame.time.wait(10)

if __name__ == "__main__":
main()

Особенности программы:

  1. 3D моделирование:
    Фундамент (пол)
    Стены (4 стороны)
    Двускатная крыша
    Дверь
  2. Управление:
    Стрелки клавиатуры: вращение камеры
    Колесо мыши: приближение/отдаление
    Закрытие окна: выход из программы
  3. Визуальные эффекты:
    Реалистичное освещение
    Разные цвета для элементов дома
    Глубина отображения (Depth Testing)

Требования для запуска:

  1. Установите необходимые библиотеки:

bash

pip install pygame PyOpenGL

  1. Запустите программу:

bash

python house_visualization.py

Возможности улучшения:

  1. Добавление окон
  2. Текстурирование поверхностей
  3. Анимация открывания двери
  4. Реализация движения камеры с помощью мыши
  5. Добавление окружающего ландшафта (деревья, дорожка)

Для более сложных проектов рекомендуется использовать специализированные библиотеки:

  • Blender для профессионального моделирования
  • Unity или Unreal Engine для интерактивной визуализации
  • Three.js для веб-реализации