Papervision3D - Создание 3D космоса

Content on this page requires a newer version of Adobe Flash Player.

Описание: 

Ну космос не космос решать вам, но Земля, Луна и звёзды там будут:)

На демке звёзд не видно из-за того, что звёзды белые и фон страницы белый, а белое на белом сложно увидеть:)

Нам понадобится Papervision3D. Его можно скачать отсюда
Там справа выбираем архив .zip и скачиваем на компьютер. После этого распаковываете архив и получаете все нужные классы. Если не получилось то смотрите видео уроки про использование классов. Если не получается скачать, то можете взять мои классы (Версия Papervision3D - 2.0.883) из исходника.
Итак начнем.
Создаем документ флэш(AS3) и устанавливаем размер сцены на 550x400. Фон должен быть обязательно черный (это же космос:))
Нам понадобится 2 текстуры и 1 мувик для создания Луны, Земли и звёзд. Вы можете использовать свои, а можете взять мои.
В мувике просто нарисуйте кружок белого цвета 20x20 и разместите его по центру
Теперь переносим текстуры и мувик на сцену. Текстуры конвертируем в мувиклипы.

Даём им Instance name

Перемещаем объекты в верхний левый угол и ставим ERASE в Blending mode

Называем этот слой 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

Теперь нажимаем CTRL+ENTER и гордимся собой ;)

Исходник: 

Комментарии

Аватар пользователя Aloran

Даешь Оригиналу статус Журналиста!!!! С формулировкой за классые уроки))))

Аватар пользователя TeT

Согласен!!!!! :)

Keyboard not found. Press any key to continue

Аватар пользователя switcher

Очень полезная тема!
Создание Луны (а по аналогии можно и Землю сделать), кстати - рассматривается в рекомендациях по программированию от Adobe. Даже текстура та же самая.
Видимо, и автор, которого вы переводили, и адобовцы "содрали" ее в одном месте )))
 
Единственное, в "инструкциях" продемонстрировано создание сферической луны с помощью базовых классов Flash CS, без "надстроек".
Так что кому интересны основы - добро пожаловать сюда.
Программирование на ADOBE ® ACTIONSCRIPT® 3.0 - страница 519 и ниже.
 
Для тех, кто не планирует делать серьезные вещи в 3D - однозначно Papervision3D!!!

<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. &quot;Совершенный код&quot;</b>

Аватар пользователя funbiscuit

Ну да, текстура луны как раз оттуда, на я НИКОГО не переводил, потому что я автор:)

P.S. В уроке сохранены только относительные размеры Луны и Земли, а всё остальное (дальность, скорость вращения, направление вращения) скорей всего сильно отличается от реальности:)

Аватар пользователя switcher

пардон

smile

, в памяти засели только прошлые переводы.

P.S. В уроке сохранены только относительные размеры Луны и Земли, а всё остальное (дальность, скорость вращения, направление вращения) скорей всего сильно отличается от реальности:)

думаю, астраномические расчеты оставим ребятам из "Роскосмоса" )))

<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. &quot;Совершенный код&quot;</b>

Аватар пользователя vitkuz

Посмотрите на это замечательное демо
Скачать текстуры земли, луны, облаков и других планет В СУПЕР КАЧЕСТВЕ можно на сайте НАСА

Аватар пользователя switcher

да ж, демка зачетная )))
с какой легкостью рисуются все эти 3-хмерные картины и без какой бы то ни было аппаратной поддержки. Тут хоть и мало объектов, но реализация света и тени + кручение + 3D. Быстро -)

<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. &quot;Совершенный код&quot;</b>

Аватар пользователя Taisan

превьюшку удалили? The requested URL /uploads/files/1250612514_earthandmoon.swf was not found on this server.

Аватар пользователя imcoder

Добрый день, уважаемые коллеги.

 

У меня такой вопрос, как в PV3D реализуется формирование глубины объектов (клипов). Данный урок наглядно демонстрирует эту проблему - если увеличить количество звезд - это прямо таки бросается в глаза. Звезды появляются поверх Земли, поверх луны. Это явно не правильно. Наверняка есть способ определения глубины объекта, как в обычном AS.

 

Там это реализуется заданием нужного индекса клипу определенного контейнера, с помощью метода setChildIndex(), например.

 

В PV3D я пытался найти нечто отвечающее за глубину, но пока все мои попытки тщетны.

 

Тут ведь есть еще такой момент (что наглядно демонстрируется данным уроком), земля и луна - это сферы и хранятся о одном общем контейнере (EarthAndMoon), звезды же представлены плоскостью и отношения к оному контейнеру не имеют никакого. Т.е. не понятно в принципе как можно увязать все это дело воедино и заставить правильно отображаться...

 

Буду признателен, если кто-то выведет мое сознание из тупика в данном вопросе.

Аватар пользователя Complicator

imcoder 


//Случайным образом размещаем звезду по осям X, Y, Z
 star.z=Math.random()*2000;

Или отдалить всю плоскость по типу

//Отдаляем систему Земля и Луна
earthAndMoon.z=12000;

 

И калькулятор Вам в руки.

Чтобы звезды были дальше контейнера с планетами.

 

Аватар пользователя Spacefuel

А как сделать, чтобы земля была посередине ролика?

Аватар пользователя stashalfer

На основе этого урока сделал врашающийся Юпитер.
Получилось, но возник ряд вопросов:
1)Как добавить тени?
2)Юпитер получается "кубиками". Хотя качество текстуры - отличное. Как это исправить?
3)Как добавить больше звезд?
4)Уважаемый Виткуз дал ссылку на демо. Как сделать что-то подобное (реагирующее на мышку)?

Кому не лень, ответьте пожалуйста. 

Аватар пользователя toma-3

akak Text3D rabotaet  nekan ne poimu