Papervision3D - Создание 3D космоса
Ну космос не космос решать вам, но Земля, Луна и звёзды там будут:)
На демке звёзд не видно из-за того, что звёзды белые и фон страницы белый, а белое на белом сложно увидеть:)
Нам понадобится Papervision3D. Его можно скачать
Там справа выбираем архив .zip и скачиваем на компьютер. После этого распаковываете архив и получаете все нужные классы. Если не получилось то смотрите видео уроки про использование классов. Если не получается скачать, то можете взять мои классы (Версия Papervision3D - 2.0.883) из исходника.
Итак начнем.
Создаем документ флэш(AS3) и устанавливаем размер сцены на 550x400. Фон должен быть обязательно черный (это же космос:))
Нам понадобится 2 текстуры и 1 мувик для создания Луны, Земли и звёзд. Вы можете использовать свои, а можете взять мои.
В мувике просто нарисуйте кружок белого цвета 20x20 и разместите его по центру
Теперь переносим текстуры и мувик на сцену. Текстуры конвертируем в мувиклипы.
Даём им Instance name
Перемещаем объекты в верхний левый угол и ставим ERASE в Blending mode
Называем этот слой textures, блокируем его и создаем новый, его называем as. Теперь пришло время ActionScript
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 и гордимся собой ;)
- 13063 просмотра
Комментарии
Даешь Оригиналу статус Журналиста!!!! С формулировкой за классые уроки))))
Согласен!!!!! :)
Keyboard not found. Press any key to continue
Очень полезная тема!
Создание Луны (а по аналогии можно и Землю сделать), кстати - рассматривается в рекомендациях по программированию от Adobe. Даже текстура та же самая.
Видимо, и автор, которого вы переводили, и адобовцы "содрали" ее в одном месте )))
Единственное, в "инструкциях" продемонстрировано создание сферической луны с помощью базовых классов Flash CS, без "надстроек".
Так что кому интересны основы - добро пожаловать сюда.
Программирование на ADOBE ® ACTIONSCRIPT® 3.0 - страница 519 и ниже.
Для тех, кто не планирует делать серьезные вещи в 3D - однозначно Papervision3D!!!
<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. "Совершенный код"</b>
Ну да, текстура луны как раз оттуда, на я НИКОГО не переводил, потому что я автор:)
P.S. В уроке сохранены только относительные размеры Луны и Земли, а всё остальное (дальность, скорость вращения, направление вращения) скорей всего сильно отличается от реальности:)
пардон
, в памяти засели только прошлые переводы.
P.S. В уроке сохранены только относительные размеры Луны и Земли, а всё остальное (дальность, скорость вращения, направление вращения) скорей всего сильно отличается от реальности:)
думаю, астраномические расчеты оставим ребятам из "Роскосмоса" )))
<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. "Совершенный код"</b>
Посмотрите на это замечательное демо
Скачать текстуры земли, луны, облаков и других планет В СУПЕР КАЧЕСТВЕ можно на сайте НАСА
да ж, демка зачетная )))
с какой легкостью рисуются все эти 3-хмерные картины и без какой бы то ни было аппаратной поддержки. Тут хоть и мало объектов, но реализация света и тени + кручение + 3D. Быстро -)
<i>Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете</i><br /><b>Стив Макконнел. "Совершенный код"</b>
превьюшку удалили? The requested URL /uploads/files/1250612514_earthandmoon.swf was not found on this server.
Добрый день, уважаемые коллеги.
У меня такой вопрос, как в PV3D реализуется формирование глубины объектов (клипов). Данный урок наглядно демонстрирует эту проблему - если увеличить количество звезд - это прямо таки бросается в глаза. Звезды появляются поверх Земли, поверх луны. Это явно не правильно. Наверняка есть способ определения глубины объекта, как в обычном AS.
Там это реализуется заданием нужного индекса клипу определенного контейнера, с помощью метода setChildIndex(), например.
В PV3D я пытался найти нечто отвечающее за глубину, но пока все мои попытки тщетны.
Тут ведь есть еще такой момент (что наглядно демонстрируется данным уроком), земля и луна - это сферы и хранятся о одном общем контейнере (EarthAndMoon), звезды же представлены плоскостью и отношения к оному контейнеру не имеют никакого. Т.е. не понятно в принципе как можно увязать все это дело воедино и заставить правильно отображаться...
Буду признателен, если кто-то выведет мое сознание из тупика в данном вопросе.
imcoder
//Случайным образом размещаем звезду по осям X, Y, Z
star.z=Math.random()*2000;
Или отдалить всю плоскость по типу
//Отдаляем систему Земля и Луна
earthAndMoon.z=12000;
И калькулятор Вам в руки.
Чтобы звезды были дальше контейнера с планетами.
А как сделать, чтобы земля была посередине ролика?
На основе этого урока сделал врашающийся Юпитер.
Получилось, но возник ряд вопросов:
1)Как добавить тени?
2)Юпитер получается "кубиками". Хотя качество текстуры - отличное. Как это исправить?
3)Как добавить больше звезд?
4)Уважаемый Виткуз дал ссылку на демо. Как сделать что-то подобное (реагирующее на мышку)?
Кому не лень, ответьте пожалуйста.
akak Text3D rabotaet nekan ne poimu