|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
as3isolib разве нельзя повернуть IsoBox на нужный угол не переписывая половину двига
Здравствуйте
Допустим, нужно повернуть этот бокс на 15 градусов Дописываю в as3isolib.display.primitive.IsoBox в override protected function drawGeometry () _rotation=45 градусов var g:Graphics = mainContainer.graphics; g.clear(); var lbb:Pt; var rbb:Pt; var rfb:Pt; var lfb:Pt; var lbt:Pt; var rbt:Pt; var rft:Pt; var lft:Pt; //all pts are named in following order "x", "y", "z" via rfb = right, front, bottom lbb = IsoMath.isoToScreen(new Pt(0, 0, 0)); // если есть вращение - пересчитать нужно координаты точек тут // меня смуило что в координатах есть имя width и length if(_rotation!=0) { // пересчет координат взависимости от вращения var _rotatedCoord:Point; _rotatedCoord=Math2.vector(length,Math2.degreesToRadians(_rotation)); trace("\n ROTATED: _rotatedCoord="+_rotatedCoord+" width="+width+" height="+height+" length="+length); rbb = IsoMath.isoToScreen(new Pt(_rotatedCoord.x, 0, 0)); rfb = IsoMath.isoToScreen(new Pt(_rotatedCoord.x, _rotatedCoord.y, 0)); lfb = IsoMath.isoToScreen(new Pt(0, _rotatedCoord.y, 0)); lbt = IsoMath.isoToScreen(new Pt(0, 0, _rotatedCoord.y)); rbt = IsoMath.isoToScreen(new Pt(_rotatedCoord.x, 0, _rotatedCoord.y)); rft = IsoMath.isoToScreen(new Pt(_rotatedCoord.x, _rotatedCoord.y, _rotatedCoord.y)); lft = IsoMath.isoToScreen(new Pt(0, _rotatedCoord.y, _rotatedCoord.y)); } else { trace("UNROTATED: "+width); rbb = IsoMath.isoToScreen(new Pt(width, 0, 0)); rfb = IsoMath.isoToScreen(new Pt(width, length, 0)); lfb = IsoMath.isoToScreen(new Pt(0, length, 0)); lbt = IsoMath.isoToScreen(new Pt(0, 0, height)); rbt = IsoMath.isoToScreen(new Pt(width, 0, height)); rft = IsoMath.isoToScreen(new Pt(width, length, height)); lft = IsoMath.isoToScreen(new Pt(0, length, height)); } Вот этот большущий куб (на первом скрине) должен быть стеной, такой же тонкости как и остальные, и эта неудавшаяся стена должна повернута быть на 45 градусов Вот код var rotatedBox:IsoBox=new IsoBox(); rotatedBox.setSize(2, 108, _wallHeight); rotatedBox.rotation=45; rotatedBox.moveTo(270, 144, -2); rotatedBox.fills = _boxFills; rotatedBox.strokes=_boxStrokes; Задача у меня наложить на рендер здания (сделаный в 3D Studio) интерактивные полы, раскрашеные програмно (заняты помещения или не заняты), добавить мышиную интерактивность к этим полам Отрисовать програмно стены, если помещение занято, отрисовать крышу с картинкой логотипа хозяина. НООО, главное условие - минимализация нагрузки на процессор Рендер (картинка здания) и вся конструкция флешевая таскается мышкой, нет облетов камерой и тому подобных прибамбасов трехмертных. Где она - золотая середина ? Последний раз редактировалось djyamato; 21.12.2011 в 07:17. |
|
|||||
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Цитата:
|
|
|||||
В смысле, переопределен ? У IsoBox нет rotation вообще, так что переопределять нечего
Изменение _rotation устанавливает, пересчет координат и отрисовка происходит Вот трэйс ROTATED: _rotated 2nd Coord=(x=76.36753236814714, y=76.36753236814712) width=2 height=16 length=108 lbb=x:0 y:0 z:0 rbb=x:76.36753236814714 y:38.18376618407357 z:0 rfb=x:1.4210854715202004e-14 y:76.36753236814712 z:0 lfb=x:-76.36753236814712 y:38.18376618407356 z:0 lbt=x:0 y:-76.36753236814712 z:76.36753236814712 rbt=x:76.36753236814714 y:-38.183766184073555 z:76.36753236814712 rft=x:1.4210854715202004e-14 y:0 z:76.36753236814712 lft=x:-76.36753236814712 y:-38.18376618407356 z:76.36753236814712 |
|
|||||
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
IsoLib Изометрический движок.
Изометрическая проекция обладает рядом особенностей упрощающих и оптимизирующих код. А что мешает вам делать рендер в чисто изометрической проекции? Да и вопрос то не про то. вы просто задали кубу неверные значения высота-ширина-длина
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 21.12.2011 в 19:20. |
|
|||||
Рендеры предоставляются
Да я разные пробовал |
Часовой пояс GMT +4, время: 23:50. |
|
« Предыдущая тема | Следующая тема » |
|
|