Плагин A3D для Autodesk® 3ds Max® 2012
В разделе «
Плагин реализован как для 32-, так и для 64-битных версий Autodesk® 3ds Max® 2012.
В разделе «
Плагин реализован как для 32-, так и для 64-битных версий Autodesk® 3ds Max® 2012.
Презентация с Adobe MAX, в рамках которой выступал Антон Волков.
В блоге танков онлайн появилось
В блоге проекта "Alternativa Platform" появились новые демки. Смотрим, восхищаемся 🙂
Мобильный телефон
Пример трехмерного демонстрирования предметов. В отличие от распостраненных сегодня 3D-панорам, созданных на базе фотографий, вы можете задействовать каждую деталь предмета и наделить ее необходимым функционалом. К примеру, клавиши на телефоне можно нажимать — таким образом есть возможность продемонстрировать и его интерфейс.
Демо казуальной игры
![]() Уровень 1 |
![]() Уровень 2 |
Прототип казуальной игры Ballance. За счет наклона поверхности вы управляете двумя шариками — синим собираете бонусы, в то же время избегаете столкновения с красным. В случае столкновения синий шарик становится все прозрачнее, вплоть до полной невидимости. Восстановить видимость можно докатив шарик до “сердечка”.
Ремонт квартиры
В этой демонстрации вы видите квартиру на стадии завершения строительства — бетонные стены, пол и потолок. Кликая по поверхностям вы выбираете вариант отделки.
Буду краток. Вот демка, использующая новые возможности
А вот исходник... буду рад, если возникнут вопросы 🙂
package com.yesutin {
import flash.display.MovieClip;
import flash.events.Event;
public class Ring extends MovieClip {
private var numPics : int = 0;
private var speed : Number = 0;
private var radius:Number=500;
private var numPic:int=0;
public function Ring(_numPics : int = 16, _speed:Number = 1) {
super();
numPics = _numPics;
speed = _speed;
addPics();
this.addEventListener(Event.ENTER_FRAME, redraw);
}
private function addPics():void{
var pic : PictureContainer;
var angel:Number = 0;
for (var i : Number = 0;i < numPics; i++) {
angel = 360 / (numPics) * i;
// pic - любой DisplayObject.
numPic = Math.floor(Math.random()*11);
pic = new PictureContainer(numPic);
pic.rotationY = 90+360-angel;
pic.x = Math.cos(angel*Math.PI/180)*radius;
pic.z = Math.sin(angel*Math.PI/180)*radius;
addChild(pic);
}
}
private function redraw(event : Event) : void {
this.rotationY += speed;
}
}
}
Встречайте обновленный сайт
На сайте можно ознакомиться с общей информацией о компании и разработках,
Также открыты сервисы для разработчиков:
Добро пожаловать!
В продолжение
Класс 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
. Попробуйте сами его "доработать лобзиком" 🙂 Ну а нетерпеливые могут
Прочитав
Смотреть
Товарищи из проекта «Alternativa Game» несмотря на приближающиеся праздники напряженно работают и радуют новыми фичами (вернее ПОТЕНЦИАЛЬНЫМИ возможностями) в своем движке... Речь идет
Размер: 1.6Мб
Управление:
Многие разработчики профессионально используют возможности ActionScript 3.0 и FlashPlayer 9 API, но Антон Волков и Ко на сегодняшний день впереди планеты всей! Смотрите и удивляйтесь.
Основные особенности:
Ждем продолжения. Хотелось бы войти в группу закрытого бета-тестирования. 😉