Космос в 3D режиме




Главная > Уроки > 3D > Космос в 3D режиме

Космос в 3D режиме

Автор/переводчик статьи: Команда сайта flashmaster.org.ua

Дата: 2013-12-20

Для того, чтобы воссоздать имитацию космоса потребуется, прежде всего, скачать дополнение к программе под названием Papervision3D. Ее можно скачать из интернета, а если она уже есть, то дело пойдет еще быстрее.

Итак, заходим в программу и создаем новый документ флэш. При этом, размер сцены, иными словами размер документа, выставляется 550x400. Фон нужно сделать черным, или же темно-синим, так как мы создаем космос.

В нашем космосе будет планета Земля, Луна и несколько звезд. Для этого понадобиться создать один муви-клип и две текстуры. В муви-клипе нужно создать круг белого цвета размером в 20x20. Его следует разместить по центру созданного документа, который можно распечатать принтером.

Далее на сцену следует перенести созданный «мувик», а также выбранные текстуры, которые, также, требуется преобразовать в муви-клип. При этом, первый называем earth и размещаем также по центру, а второй – moon, и тоже ставим центральную ориентацию.

Теперь всем трем созданным муви-клипам даем Instance name. Для муви-клипа Земли это будет earthPic, для Луны – moonPic, а для стартовой (самый первый созданный муви-клип) – starPic.

На следующем этапе следует переместить все объекты в левый верхний угол на вкладке Align. А в настройках дисплея в Blending mode выбираем опцию Erase.

Весь этот слой называем textures. Теперь его нужно заблокировать, а потом создать новый слой под названием as.

Далее нужно заняться непосредственно ActionScript. Для этого делаем следующие шаги:

//Импортируем классы для работы с Papervision3D

import org.papervision3d.scenes.Scene3D;

import org.papervision3d.cameras.Camera3D;

import org.papervision3d.render.BasicRenderEngine;

import org.papervision3d.view.Viewport3D;

import org.papervision3d.objects.primitives.*;

import org.papervision3d.objects.*;

import org.papervision3d.materials.MovieMaterial;

//Создаём массив для хранения звёзд

var stars:Array=new Array();

//Создаём сцену

var scene:Scene3D=new Scene3D();

//Создаём Viewport

var viewport:Viewport3D=new Viewport3D();

addChild(viewport);

//Создаём камеру

var camera:Camera3D=new Camera3D();

camera.zoom=10;

//Создаём рендер

var render:BasicRenderEngine=new BasicRenderEngine();

//Создаём материал для звезды

var starMaterial:MovieMaterial=new MovieMaterial(starPic);

//Создаём цикл для добавления звёзд

for (var i:int=0; i<100; i++)

{

//Создаём новую плоскость

//Параметры(материал,ширина,высота,количество сегментов по ширине,по высоте)

var star:Plane=new Plane(starMaterial,15,15,1,1);

//Случайным образом размещаем звезду по осям X, Y, Z

star.x=Math.random()*8000-4000;

star.y=Math.random()*8000-4000;

star.z=Math.random()*2000;

//Поворачиваем звезду на случайный угол по X и Y

star.rotationX=Math.random()*180-90;

star.rotationY=Math.random()*180-90;

//Добавляем звезду на сцену

scene.addChild(star);

//Добавляем звезду в архив

stars.push(star);

}

//Создаём 3D объект для хранения Земли и Луны

var earthAndMoon:DisplayObject3D=new DisplayObject3D();

//Добавляем его на сцену

scene.addChild(earthAndMoon);

//Отдаляем систему Земля и Луна

earthAndMoon.z=12000;

//Создаём материал Луны

var moonMaterial:MovieMaterial=new MovieMaterial(moonPic);

moonMaterial.smooth=true;

//Создаем сферу (Луну)

//Параметры(материал, радиус, количество сегментов по ширине,по высоте)

var moon:Sphere=new Sphere(moonMaterial,600,20,20);

//Добавляем Луну в систему Земля и Луна

earthAndMoon.addChild(moon);

//Ставим Луну на расстоянии от центра

moon.z=8000;

//Создаём материал Земли

var earthMaterial:MovieMaterial=new MovieMaterial(earthPic);

earthMaterial.smooth=true;

//Создаём сферу(Землю)

var earth:Sphere=new Sphere(earthMaterial,3600,20,20);

//Добавляем Землю в систему Земля и Луна

earthAndMoon.addChild(earth);

//Ставим Землю в центр системы

earth.x=0;

//Регистрируем событие обновления кадра, чтобы создать движение луны, земли, звёзд

addEventListener(Event.ENTER_FRAME, loop);

//Функция обновления

function loop(e:Event):void

{

//Создаём цикл, чтобы перерисовать каждую звезду

for(var i:int=0;i
//Поворачиваем Луну по оси Y

moon.rotationY++;

//Поворачиваем Землю по оси Y

earth.rotationY+=0.5;

//Поворачиваем всю систему Земля и Луна по оси Y, для создания иллюзии, что Луна вращается вокруг Земли

earthAndMoon.rotationY++;

//Отрендерим сцену, чтобы увидеть изменения

render.renderScene(scene,camera,viewport);

}   

Вот и все, космос готов.

Просмотров: 2104


Понравился материал? Поделись с друзьями!





Подписаться на рассылку.

При перепечатки материалов ссылка на наш сайт обязательна!


 1