My First ActionScript 3 Application » Графика

Архив

Архив раздела ‘Графика’

Всем котиков

17 февраля 2014 1 комментарий

Categories: Графика Tags:

AlternativaPlatform на конференции Adobe MAX 2011

4 октября 2011 5 комментариев

Конференция Adobe MAX 2011 проходит в Лос-Анджелесе с 1 по 5 октября 2011 года. Мы выступили золотым спонсором мероприятия и представили на нем свои последние разработки в области отображения трехмерной графики с аппаратным ускорением в среде Flash Player. Генеральный директор компании Александр Карпович и арт-директор Иван Зыков выступили с докладом “Amazing new possibilities in Flash with Alternativa3D”, рассказав о возможностях графического движка Alternativa3D 8. Разрабатывать и запускать проекты на базе движка можно уже сегодня.

Наряду с графическим движком и серверной частью мы создаем собственный онлайн-редактор AlternativaEditor. Уже сейчас его можно использовать как бесплатный инструмент для публикации 3D-моделей. После загрузки модели в редактор по адресу editor.alternativaplatform.com пользователь получает ссылку и код для встраивания объекта в блог или сайт. Впоследствии AlternativaEditor также будет доступен партнерам компании как полноценный инструмент для изменения параметров игрового мира и перемещения объектов в реальном времени непосредственно во время игры.

Увидеть возможности AlternativaPlatform можно своими глазами, загрузив интерактивную демонстрацию “Танков Онлайн 2.0″ на картах “Арена” и “Крушение“, а также промо-игру MAX Racer, созданную по просьбе Adobe Systems для демонстрации возможностей Stage3D (Molehill 3D APIs) на Adobe MAX 2010.

Арена Крушение max_racer2.jpg

Вместе с этим, хотелось бы отметить, что Flash Player 11 и AIR  доступен для устройств, работающих под управлением операционной системы Android. Разработчики Adobe отмечают, что теперь сами SWF файлы могут занимать на 40% меньше, чем ранее, засчет улучшенной компрессии. Из интересного для пользователей стоит отметить аппаратное ускорение видео в AIR. Теперь контент-провайдеры HD-видео могут без особых проблем создавать AIR-приложения, которые будут работать на многих платформах, в том числе и на Android.

Вообще, большая часть изменений касается разработчиков, но и ускорение явно отразится и на пользователях. По задумке Adobe Stage 3D, о котором уже писалось выше, позволит разрабатывать замечательные 3D-игры, которые без «лагов» будут работать как на мощных рабочих станциях, так и на Android-смартфонах и планшетах. Похоже, Flash хоронить рано!

P.S.: не надо ждать, что после обновления Flash Player до 11 версии воспроизведение Flash-контента ускорится, большинство новых функций активируется на стороне провайдера контента.

P.P.S.: Adobe Flash Player 11 и Adobe AIR 3 для Android имеют следующие технические ограничения: процессор не ниже ARMv7 с математическим сопроцессором, OpenGL ES2.0 и частотой не менее 550 МГц, не менее 256 оперативной памяти (RAM).

Скачать Adobe Flash Player 11

Скачать Adobe AIR 3

Новые демки Alternativa3D

6 ноября 2008 1 комментарий

В блоге проекта "Alternativa Platform" появились новые демки. Смотрим, восхищаемся 🙂

Мобильный телефон


+ версия для Flash Player 10

Пример трехмерного демонстрирования предметов. В отличие от распостраненных сегодня 3D-панорам, созданных на базе фотографий, вы можете задействовать каждую деталь предмета и наделить ее необходимым функционалом. К примеру, клавиши на телефоне можно нажимать — таким образом есть возможность продемонстрировать и его интерфейс.

Демо казуальной игры

lev1.jpg
Уровень 1
lev2.jpg
Уровень 2

Прототип казуальной игры Ballance. За счет наклона поверхности вы управляете двумя шариками — синим собираете бонусы, в то же время избегаете столкновения с красным. В случае столкновения синий шарик становится все прозрачнее, вплоть до полной невидимости. Восстановить видимость можно докатив шарик до “сердечка”.

Ремонт квартиры


+ версия для Flash Player 10

В этой демонстрации вы видите квартиру на стадии завершения строительства — бетонные стены, пол и потолок. Кликая по поверхностям вы выбираете вариант отделки.

Categories: 3D, Графика Tags: , ,

Google Lively — новая социальная сеть на основе виртуального пространства

9 июля 2008 3 комментария

Компания Google сегодня представила публике свой новый сервис. К поиску он пока имеет мало отношения: Lively.com - виртуальный мир в браузере.:

Пользователи Lively могут создать виртуального персонажа и ходить по виртуальным “комнатам”, общаясь с их посетителями.

Принцип работы во многом напоминает игру Second Life. Однако, в отличие от популярного конкурента, Lively работает прямо в браузере (пока только в среде Windows в Firefox и Internet Explorer) после установки плагина.

Разработка плагина для использования Lively под Mac OSX является приоритетной задачей.

Как будет развиваться этот сервис - никому не известно. Поговаривают, что Гугл собирается внедрять множество сервисов внутрь Lively. Так что будем ждать API для взаимодействия с вирутальным миром... 🙂

зы: с реальным миром мы взаимодействовать тоже будем через API ??? 🙁

Визуализация 3D поверхностей во Flex

17 марта 2008 1 комментарий

Я решил еще немного поработать с предыдущим примером и сделал простенькое Flex приложение. Исходники прилагаются.

Оперирование визуализацией произвольных 3D поверхностей

14 марта 2008 2 комментария

В продолжение предыдущей публикации, я попробовал расширить наглядность примера. Для этого я создал новый 3D-объект, который представляет собой набор из 11 параметрических поверхностей (взято из туториала "A Demonstration of Customizable Features of Our 3D Surfaces") :

Класс Surfaces:

package lib3d {
	import lib3d.Object3D;

	/**
	 * @author Michael
	 */
	public class Surfaces extends Object3D {
		private var _exampleNum : int = 1;

		public function set exampleNum(n : Number) : void {
			_exampleNum = n;
			setTilesArray();
		}

		public function get exampleNum() : Number {
			return _exampleNum ;
		}

		private const cubeSize : Number = 100;

		public function Surfaces() {
			super();
		}

		override public function setTilesArray() : void {
			var i : int;
			var j : int;
			var istep : Number;
			var jstep : Number;
			var tmin : Number;
			var tmax : Number;
			var smin : Number;
			var smax : Number;
			var curt : Number;
			var curs : Number;

			tmin = 0;
			smin = 0;

			switch (_exampleNum) {
				case 1:
					tmax = Math.PI;
					smax = 7 / 4 * Math.PI;
					break;
				case 2:
					tmax = 2 * Math.PI;
					smax = 2 * Math.PI;
					break;
				case 3:
					tmax = 1.5 * Math.PI;
					smax = 2 * Math.PI;
					break;

				case 4:
					tmax = Math.PI;
					smax = 1.5 * Math.PI;
					break;

				case 5:
					tmax = Math.PI;
					smax = 2 * Math.PI;
					break;

				case 6:
					tmax = Math.PI;
					smax = 1.5 * Math.PI;
					break;

				case 7:
					tmax = 1;
					smax = 2 * Math.PI;
					break;

				case 8:
					tmax = 1.5 * Math.PI;
					smax = 2 * Math.PI;
					break;

				case 9:
					tmax = 1.5 * Math.PI;
					smax = 2 * Math.PI;
					break;

				case 10:
					tmax = Math.PI;
					smax = 2 * Math.PI;
					break;

				case 11:
					tmax = Math.PI;
					smax = 3 * Math.PI;
					break;
			}
			istep = (smax - smin) / nMesh;
			jstep = (tmax - tmin) / nMesh;
			tilesArray = new Array();
			for(i = 0;i <= nMesh; i++) {
				curs = istep * i + smin;
				tilesArray[i] = new Array();
				for(j = 0;j <= nMesh;j++) {
					curt = jstep * j + tmin;
					switch (_exampleNum) {
						case 1:
							tilesArray[i][j] = [cubeSize * Math.cos(curs) * Math.sin(curt),cubeSize * Math.sin(curs) * Math.sin(curt),cubeSize * Math.cos(curt)];
							break;
						case 2:
							tilesArray[i][j] = [cubeSize / 4.4 * (curt) * Math.cos(curs + Math.PI) * Math.sin(Math.cos(curt)),cubeSize / 4.4 * (curt) * Math.sin(curs + Math.PI) * Math.sin(Math.cos(curt)),cubeSize / 3.7 * (curt) * Math.cos(Math.cos(curt)) - 0.8 * cubeSize];
							break;
						case 3:
							tilesArray[i][j] = [cubeSize / 4.3 * Math.cos(curs) * (2 + Math.cos(curt) * 2),cubeSize / 4.3 * Math.sin(curs) * (2 + Math.cos(curt) * 2),cubeSize / 2.6 * (3 - curt) - 0.3 * cubeSize];
							break;

						case 4:
							tilesArray[i][j] = [cubeSize / 1.6 * Math.sqrt(curt) * Math.sin(2 * curt) * Math.cos(curs - Math.PI),cubeSize / 1.6 * Math.sqrt(curt) * Math.sin(2 * curt) * Math.sin(curs - Math.PI),cubeSize / 1.6 * Math.sqrt(curt) * Math.cos(2 * curt) - 0.15 * cubeSize];
							break;

						case 5:
							tilesArray[i][j] = [cubeSize / 3.5 * Math.cos(curs) * (Math.cos(4 * curt) + 2),cubeSize / 3.5 * Math.sin(curs) * (Math.cos(4 * curt) + 2),cubeSize / 2 * curt - 0.8 * cubeSize];
							break;

						case 6:
							tilesArray[i][j] = [3.2 * cubeSize * Math.sin(curt) * Math.cos(Math.PI / 2 * Math.sin(curt) * Math.cos(curs)) / 2 * Math.sin(curt) * Math.cos(curs),2.2 * cubeSize * Math.sin(curt) * Math.cos(Math.PI / 2 * Math.sin(curt) * Math.cos(curs)) / 2 * Math.sin(curt) * Math.sin(curs),2.2 * cubeSize * Math.sin(curt) * Math.cos(Math.PI / 2 * Math.sin(curt) * Math.cos(curs)) / 2 * Math.cos(curt)];
							break;

						case 7:
							tilesArray[i][j] = [cubeSize / 2.4 * (2 * Math.cos(curs) + (curt - 0.5) * Math.cos(curs / 2)),cubeSize / 2.4 * (2 * Math.sin(curs) + (curt - 0.5) * Math.cos(curs / 2)),cubeSize / 2.4 * 4 * (curt - 0.5) * Math.sin(curs / 2) - 0.1 * cubeSize];
							break;

						case 8:
							tilesArray[i][j] = [cubeSize / 4.3 * (curt) * Math.cos(curs + Math.PI) * Math.sin(curt),cubeSize / 4.3 * (curt) * Math.sin(curs + Math.PI) * Math.sin(curt),cubeSize / 4.3 * (curt) * Math.cos(curt)];
							break;

						case 9:
							tilesArray[i][j] = [cubeSize / 2.8 * (curt) * Math.cos(curs + Math.PI) * Math.sin(Math.cos(curt)),cubeSize / 2.8 * (curt) * Math.sin(curs + Math.PI) * Math.sin(Math.cos(curt)),cubeSize / 2.8 * (curt) * Math.cos(Math.cos(curt)) - cubeSize];
							break;

						case 10:
							tilesArray[i][j] = [cubeSize / 1.15 * Math.cos(curs) * Math.sin(2 * curt),cubeSize / 1.15 * Math.sin(curs) * Math.sin(2 * curt),cubeSize / 1.15 * Math.cos(curt)];
							break;

						case 11:
							tilesArray[i][j] = [cubeSize / 2.7 * Math.pow(4 / 3, curs - 5) * Math.sin(curt) * Math.sin(curt) * Math.cos(curs - 5),cubeSize / 2.7 * Math.pow(4 / 3, curs - 5) * Math.sin(curt) * Math.sin(curt) * Math.sin(curs - 5) + 0.2 * cubeSize,cubeSize / 2.7 * Math.pow(4 / 3, curs - 5) * Math.sin(curt) * Math.cos(curt) - 0.2 * cubeSize];
							break;
					}
				}
			}
		}
	}
}

Небольшие изменения для управления альфа-каналом пришлось сделать в классе View3D. Попробуйте сами его "доработать лобзиком" 🙂 Ну а нетерпеливые могут скачать архив.

Пример простой 3D визуализации

11 марта 2008 1 комментарий

Прочитав туториал "Simple 3D Drawing in Flash CS3", я решил разобраться в исходниках и немного их "классифицировать" (для большей универсальности). И у меня получились следующие классы:

  • Object3D - прототип 3D объекта;
  • Sphere - параметрически описанный объект сферы
  • View3D - класс, рисующий 3D объект
  • Main - основной класс документа

Смотреть результат.

Читать далее...

Построение рельефного освещения в «Alternativa Game»

26 декабря 2007 Нет комментариев

Товарищи из проекта «Alternativa Game» несмотря на приближающиеся праздники напряженно работают и радуют новыми фичами (вернее ПОТЕНЦИАЛЬНЫМИ возможностями) в своем движке... Речь идет о построении рельефного освещения при помощи карт нормалей. Я с удовольствием потестировал качество/скорость отрисовки и был несомненно впечатлен:
Карты нормалей
Размер: 1.6Мб
Управление:

  • Мышь — перемещение источника света
  • Клик — изменение цвета освещения
  • Колёсико — изменить бликовость материала
  • Пробел — следующая текстура

Интересный компонент “Зажигай-ка” от Г.Скиннера

16 ноября 2007 1 комментарий

Грант Скиннер опубликовал интересный компонент для Flash CS3, который позволяет создать эффект горения мувика, а при изменении некоторых настроек, и прочие эффекты:

Те, кто заинтересовался возможностью исследовать код, могут скачать компонент и исходники.

Categories: Графика Tags: ,

Alternativa Game — потрясающий 3D движок

26 октября 2007 2 комментария

Многие разработчики профессионально используют возможности ActionScript 3.0 и FlashPlayer 9 API, но Антон Волков и Ко на сегодняшний день впереди планеты всей! Смотрите и удивляйтесь. Демо-версия движка Alternativa3D…

null

Основные особенности:

  • Трёхмерная геометрия и 3D-спрайты. Здания и ландшафт выполняются в “честном” 3D, объекты со сложной геометрией — в виде спрайтов, в т.ч. многофазных.
  • Система освещения, включающая направленные и точечные источники света. Изменение времени суток, рассеянный и солнечный свет, автоматическое затенение в углах, динамические тени, включая тени от спрайтов.
  • Настраиваемое качество текстур и освещения (при отсутствии аппаратной поддержки 3D-графики во Flash это особенно важно).
  • Низкая нагрузка на процессор (исключая моменты изменения освещения и вращения камеры, что происходит нечасто и не критично для игры).

Ждем продолжения. Хотелось бы войти в группу закрытого бета-тестирования. 😉

Categories: Графика Tags: ,