Создание модели меча (45 мин)
![]() |
Сначала полезно построить чертеж и найти координаты вершин.

Создаем заголовок:
GRAPHICS3D 640,480
cam = CREATECAMERA()
POSITIONENTITY cam, 0, 0, -30
l = CREATELIGHT()
ROTATEENTITY l, 0, 45, 45
Загрузим текстуры:
wood = LOADTEXTURE("c:\media\wood.jpg")
steel = LOADTEXTURE("c:\media\steel.jpg",1 + 8 + 64)
Дополнительный параметр во второй строке означает то, что текстура является сферической картой отражений. Это особый тип текстуры, который создает иллюзию зеркальности объекта. Создаем две пустые фигуры и накладываем на них текстуры steel (сталь) и wood (дерево):
m1 = CREATEMESH()
ENTITYTEXTURE m1, steel
m2 = CREATEMESH(m1)
ENTITYTEXTURE m2, wood
Так как порядок действий для оформления фигур один и тот же, а в программе необходимо создать две фигуры, то удобнее будет сделать это в цикле. Оператор IF-THEN задает первую фигуру для оформления в первом шаге цикла, а вторую – во втором.
FOR n=1 TO 2
IF n = 1 THEN
m = m1
ELSE
m = m2
END IF
Создаем поверхность, привязанную к фигуре:
s = CREATESURFACE(m)
Считываем количество вершин:
READ vq
Цикл по всем вершинам:
FOR nn = 1 TO vq
Считываем координаты вершины:
READ x#, y#, z#
Добавляем вершину к поверхности (координаты текстуры возьмем случайные) и закрываем цикл:
ADDVERTEX s, x#, y#, z#, RND(1), RND(1)
NEXT
Считываем кол-во треугольников
READ tq
Цикл по всем треугольникам:
FOR nn = 1 TO tq
Считываем индексы вершин:
READ v1, v2, v3
Добавляем треугольник, закрываем цикл:
ADDTRIANGLE s, v1, v2, v3
NEXT
Обеспечение корректного освещения:
UPDATENORMALS m
NEXT
Теперь вернемся к основной программе. Создадим две фигуры с адресами m1 и m2 и текстурами steel и wood. Обратите внимание на то, что родительский объект фигуры m1 равен 0, то есть не существует.
m1 = READMESH(0, steel)
m2 = READMESH (m1, wood)
Создадим ручку меча – цилиндр: