Интерактивная компьютерная графика (икг) лабы / Лаба ИГ 2 — копия
.docxМИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное автономное образовательное учреждение высшего образования
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ»
ИНСТИТУТ НЕПРЕРЫВНОГО И ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ КАФЕДРА 44 (Кафедра вычислительных систем и сетей)
|
ОЦЕНКА
ПРЕПОДАВАТЕЛЬ
Старший преподаватель |
|
|
|
А.В. Аксенов |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
ЛАБОРАТОРНАЯ РАБОТА №2 |
СЛОЖНЫЕ ГЕОМЕТРИЧЕСКИЕ ОБЪЕКТЫ
|
по дисциплине: Интерактивная компьютерная графика
|
РАБОТУ ВЫПОЛНИЛА
СТУДЕНТКА ГР. № |
|
|
|
|
|
|
номер группы |
|
подпись, дата |
|
инициалы, фамилия |
Санкт-Петербург 2020
1. Цель работы
Ознакомление с принципами и приобретение навыков использования узлов сложных геометрических объектов для построения статических X3D-сцен.
2. Постановка задачи
Разработать сюжет 3D-сцены. Пользуясь узлами сложных геометрических объектов и применяя пространственные преобразования реализовать сцену в виде HTML-страницы с внедренным X3D-кодом. Задать для объектов сцены свойства материала и текстур.
3. Задание
Сценой является волшебник из предыдущей работы (для полноты сюжета), планета, звёзды и полотно. Для создания планеты использовался узелы Transform, Material, для создания звезд использовались узлы PointSet, а полотно создавалось с помощью узла ElevationGrid. В каждом из узлов использовались координаты, по которым производилось построение объекта.
4. Выполнения работы
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Лабораторная работа 2</title>
<link rel="stylesheet" href="https://www.x3dom.org/download/1.8.1/x3dom.css">
<script src="https://www.x3dom.org/download/1.7/x3dom-full.js"></script>
</head>
<body>
<h1>Лабораторная работа №2</h1>
<p>Сложные геометрические объекты</p>
<p> </p>
<p> </p>
<X3D id="x3d" xmlns="https://www.x3dom.org/x3dom">
<Scene>
<!-- поле -->
<Transform translation="-15 -4.1 -10">
<Shape>
<Appearance>
<Material diffuseColor='pink'></Material>
</Appearance>
<ElevationGrid xDimension="7" zDimension="6"
height="1.7, 14, 4.5, 0.5, 8, 5.9, -5,
1, 0.5, 0.25, 0.25, 0.5, 1, 0,
0.5, 0.25, 1.75, 3, 0.25, 0.5, -4,
0.5, 0.8, 0, 0, 0.25, 0.5, -2,
1, 0.5, 7.25, 2.25, 0.5, 1, 3,
1.5, 1, 0.5, 3.5, 1, 1.5, -4"
xSpacing="5.0" zSpacing="5.0" solid="false">
</ElevationGrid>
</Shape>
</Transform>
<!-- звезды -->
<group def="Gr4">
<transform translation='0 0 0' scale="25 25 25 ">
<shape def="four_box">
<pointset>
<coordinate point=' 0 0 0
0.1 0.1 -0.1
0.3 0.3 0.3 0.3
0.33 -0.5 0.2
0.3 0.1 -0.2
2 0.3 0.4
-0.5 1 0.7
0.6 0.2 0.5
0.8 0.6 2
-0.6 0.9 0.5
0.8 -0.6 0.2
0.6 -0.9 0.5
-0.5 0.6 0.2
0.6 0.8 -0.5
-0.2 0.6 0.5
0.2 -0.3 0.6
-1 -0.7 -0.3' />
<color color='1 0 1 0 0 1 0 0 1 1 0 1 1 1 1 0 1 0' />
</pointset>
</shape>
</transform>
<transform translation='-100 -100 -100' scale="25 25 25 ">
<shape use="four_box">
</shape>
</transform>
</group>
<!-- планета -->
<Transform translation='-25 15 0' rotation='0 0 0'>
<Shape>
<Appearance>
<Material diffuseColor='black'></Material>
</Appearance>
<Sphere radius="17"></Sphere>
</Shape>
</Transform>
<Transform translation='-25 15 0' rotation='1 1 0 20'>
<Shape>
<Torus innerRadius="1.5" outerRadius="17.0"></Torus>
<Appearance>
<Material diffuseColor="12 .1 .4"></Material>
</Appearance>
</Shape>
</Transform>
<Transform translation='-25 15 0' rotation='1 1 0 20'>
<Shape>
<Torus innerRadius="0.3" outerRadius="25.0"></Torus>
<Appearance>
<Material diffuseColor="1 .1 .4"></Material>
</Appearance>
</Shape>
</Transform>
<!-- Тело волшебика -->
<Transform translation='0 0 0'>
<Shape>
<Appearance>
<imageTexture url="danny_de_vito5.jpg"></imageTexture>
</Appearance>
<Cone size='1 2 3'></Cone>
</Shape>
</Transform>
<!-- Голова волшебика -->
<Transform translation='0 1 0' rotation='0 0 0'>
<Shape>
<Appearance>
<Material diffuseColor='pink'></Material>
</Appearance>
<Sphere radius="0.5"></Sphere>
</Shape>
</Transform>
<!-- Ноги волшебника -->
<Transform translation='0.25 -1.1 0' rotation='0 0 0'>
<Shape>
<Appearance>
<Material diffuseColor='pink'></Material>
</Appearance>
<Box size='0.3 0.5 0.3'>
</Shape>
<Transform translation='-0.5 0 0' rotation='0 0 0'>
<Shape>
<Appearance>
<Material diffuseColor='pink'></Material>
</Appearance>
<Box size='0.3 0.5 0.3'>
</Shape>
</Transform>
<!-- Колпак -->
<Transform translation='-0.25 3.1 -0.5' rotation='1 0 0 -0.5'>
<Shape>
<Appearance>
<Material diffuseColor='blue'></Material>
</Appearance>
<Snout dbottom="0.83" dtop="0" height="1.8" xoff="0" yoff="0"></Snout>
</Shape>
</Transform>
<!-- Глаза -->
<Transform def='lefteye' translation='0 2.1 0.45' scale='0.075 0.075 0.075'>
<Shape def='eye'>
<Appearance>
<Material diffusecolor='black'></Material>
</Appearance>
<Sphere radius='1'></Sphere>
</Shape>
</Transform>
<Transform def='righteye' translation='-0.5 2.1 0.45' scale='0.075 0.075 0.075'>
<Shape use='eye'></Shape>
</Transform>
<!-- Руки -->
<Transform def='lefthand' translation='0.4 1 0' rotation='0 0 1 1'>
<Shape def='hand'>
<Appearance>
<Material diffusecolor='pink'></Material>
</Appearance>
<Cylinder radius='0.1' height='1'></Cylinder>
</Shape>
</Transform>
<Transform def='righthand' translation='-0.9 1 0' rotation='0 0 1 -1'>
<Shape use='hand'></Shape>
</Transform>
<!-- Нос -->
<Transform translation='-0.25 2 0.5'>
<Shape>
<Torus innerRadius="0.07" outerRadius="0.05"></Torus>
<Appearance>
<Material diffuseColor="1 .3 .3"></Material>
</Appearance>
</Shape>
</Tranform>
<!-- Брови -->
<Transform translation='-0.2 0.3 -0.05' rotation='0 0 1 2.7'>
<Shape>
<Appearance>
<Material diffuseColor='black'></Material>
</Appearance>
<Box size='0.25 0.05 0.05'>
</Shape>
</Transform>
<Transform translation='0.2 0.3 -0.05' rotation='0 0 1 -2.7'>
<Shape>
<Appearance>
<Material diffuseColor='black'></Material>
</Appearance>
<Box size='0.25 0.05 0.05'>
</Shape>
</Transform>
</body>
</html>
Рисунок 1 – Общий план выполнения кода
Рисунок 2 – Планета, полотно и звёзды
6. Вывод
В ходе лабораторной работы ознакомился с принципами и приобретение навыков использования узлов сложных геометрических объектов для построения статических X3D-сцен.