Архив

Публикации с меткой ‘3D’

Плагин A3D для Autodesk® 3ds Max® 2012

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

В разделе «3D-движок» на официальном сайте AlternativaPlatform появился плагин для Autodesk® 3ds Max® 2012. Он добавляет возможность импорта/экспорта 3D-моделей в формате A3D.

Плагин реализован как для 32-, так и для 64-битных версий Autodesk® 3ds Max® 2012.

Digging into Molehill

2 ноября 2010 Нет комментариев

Презентация с Adobe MAX, в рамках которой выступал Антон Волков.

Свет, камера, карамельные танки

7 сентября 2009 2 комментария

В блоге танков онлайн появилось видео, демонстрирующее новые возможности движка Alternativa3D.

Categories: 3D, Видео Tags: , , ,

Новые демки Alternativa3D

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

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

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


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

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

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

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

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

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


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

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

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

Изучаем ActionScript API для Flash Player 10

27 августа 2008 3 комментария

Буду краток. Вот демка, использующая новые возможности ActionScript API для Flash Player 10. Подробнее о них рассказывает Mike Chambers. Ах, да... Для просмотра необходим Flash Player 10 RC из лаборатории.

А вот исходник... буду рад, если возникнут вопросы 🙂

  1. package com.yesutin {
  2. import flash.display.MovieClip;
  3. import flash.events.Event;
  4.  
  5. public class Ring extends MovieClip {
  6. private var numPics : int = 0;
  7. private var speed : Number = 0;
  8. private var radius:Number=500;
  9. private var numPic:int=0;
  10.  
  11. public function Ring(_numPics : int = 16, _speed:Number = 1) {
  12. super();
  13. numPics = _numPics;
  14. speed = _speed;
  15.  
  16. addPics();
  17. this.addEventListener(Event.ENTER_FRAME, redraw);
  18. }
  19.  
  20. private function addPics():void{
  21. var pic : PictureContainer;
  22. var angel:Number = 0;
  23. for (var i : Number = 0;i < numPics; i++) {
  24. angel = 360 / (numPics) * i;
  25.  
  26. // pic - любой DisplayObject.
  27. numPic = Math.floor(Math.random()*11);
  28. pic = new PictureContainer(numPic);
  29.  
  30. pic.rotationY = 90+360-angel;
  31. pic.x = Math.cos(angel*Math.PI/180)*radius;
  32. pic.z = Math.sin(angel*Math.PI/180)*radius;
  33.  
  34. addChild(pic);
  35.  
  36. }
  37. }
  38.  
  39. private function redraw(event : Event) : void {
  40. this.rotationY += speed;
  41. }
  42. }
  43. }

Революция! Web уже не будет таким, как прежде

Встречайте обновленный сайт AlternativaPlatform.Com

На сайте можно ознакомиться с общей информацией о компании и разработках, зарегистрироваться и бесплатно скачать библиотеку Alternativa3D для использования в некоммерческих целях.

Также открыты сервисы для разработчиков:

Добро пожаловать!

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

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

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

Класс Surfaces:

  1. package lib3d {
  2. import lib3d.Object3D;
  3.  
  4. /**
  5. * @author Michael
  6. */
  7. public class Surfaces extends Object3D {
  8. private var _exampleNum : int = 1;
  9.  
  10. public function set exampleNum(n : Number) : void {
  11. _exampleNum = n;
  12. setTilesArray();
  13. }
  14.  
  15. public function get exampleNum() : Number {
  16. return _exampleNum ;
  17. }
  18.  
  19. private const cubeSize : Number = 100;
  20.  
  21. public function Surfaces() {
  22. super();
  23. }
  24.  
  25. override public function setTilesArray() : void {
  26. var i : int;
  27. var j : int;
  28. var istep : Number;
  29. var jstep : Number;
  30. var tmin : Number;
  31. var tmax : Number;
  32. var smin : Number;
  33. var smax : Number;
  34. var curt : Number;
  35. var curs : Number;
  36.  
  37. tmin = 0;
  38. smin = 0;
  39.  
  40. switch (_exampleNum) {
  41. case 1:
  42. tmax = Math.PI;
  43. smax = 7 / 4 * Math.PI;
  44. break;
  45. case 2:
  46. tmax = 2 * Math.PI;
  47. smax = 2 * Math.PI;
  48. break;
  49. case 3:
  50. tmax = 1.5 * Math.PI;
  51. smax = 2 * Math.PI;
  52. break;
  53.  
  54. case 4:
  55. tmax = Math.PI;
  56. smax = 1.5 * Math.PI;
  57. break;
  58.  
  59. case 5:
  60. tmax = Math.PI;
  61. smax = 2 * Math.PI;
  62. break;
  63.  
  64. case 6:
  65. tmax = Math.PI;
  66. smax = 1.5 * Math.PI;
  67. break;
  68.  
  69. case 7:
  70. tmax = 1;
  71. smax = 2 * Math.PI;
  72. break;
  73.  
  74. case 8:
  75. tmax = 1.5 * Math.PI;
  76. smax = 2 * Math.PI;
  77. break;
  78.  
  79. case 9:
  80. tmax = 1.5 * Math.PI;
  81. smax = 2 * Math.PI;
  82. break;
  83.  
  84. case 10:
  85. tmax = Math.PI;
  86. smax = 2 * Math.PI;
  87. break;
  88.  
  89. case 11:
  90. tmax = Math.PI;
  91. smax = 3 * Math.PI;
  92. break;
  93. }
  94. istep = (smax - smin) / nMesh;
  95. jstep = (tmax - tmin) / nMesh;
  96. tilesArray = new Array();
  97. for(i = 0;i <= nMesh; i++) {
  98. curs = istep * i + smin;
  99. tilesArray[i] = new Array();
  100. for(j = 0;j <= nMesh;j++) {
  101. curt = jstep * j + tmin;
  102. switch (_exampleNum) {
  103. case 1:
  104. tilesArray[i][j] = [cubeSize * Math.cos(curs) * Math.sin(curt),cubeSize * Math.sin(curs) * Math.sin(curt),cubeSize * Math.cos(curt)];
  105. break;
  106. case 2:
  107. 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];
  108. break;
  109. case 3:
  110. 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];
  111. break;
  112.  
  113. case 4:
  114. 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];
  115. break;
  116.  
  117. case 5:
  118. 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];
  119. break;
  120.  
  121. case 6:
  122. 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)];
  123. break;
  124.  
  125. case 7:
  126. 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];
  127. break;
  128.  
  129. case 8:
  130. 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)];
  131. break;
  132.  
  133. case 9:
  134. 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];
  135. break;
  136.  
  137. case 10:
  138. 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)];
  139. break;
  140.  
  141. case 11:
  142. 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];
  143. break;
  144. }
  145. }
  146. }
  147. }
  148. }
  149. }

Небольшие изменения для управления альфа-каналом пришлось сделать в классе 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Мб
Управление:

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

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

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

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

null

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

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

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

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