![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+6 30.10.12]
Регистрация: Jul 2005
Сообщений: 35
|
Заранее извиняюсь, если неправильно выбрал ветку.
Есть изображение - стрелка. Нужно сделать следующее: как-будто стрелка нарисована на прозрачном цилиндре (сама стрелка изображена на цилиндрической поверхности), цилиндр вращается, и при этом цилиндр немного повернут в сторону наблюдателя (т.е. видно что цилиндр объемный). При этом самого цилиндра не видно. Насколько я понял, в Swift 3D этого сделать нельзя, вроде бы можно в Papervision, но это достаточно сложно. Может быть есть более легкие способы? |
|
|||||
|
Варианты:
1. Нарисовать в любой знакомой вам программе 3d моделирования. Сделать серию картинок. Последовательно показать картинки. 2. Нарисовать текстуру со стрелкой. С помощью drawTriangles создать цилиндр и натянуть на него текстуру. Вращать цилиндр. 3. Нарисовать текстуру со стрелкой. С помощью любого 3d движка (Papervision уже четыре года не обновлялся и устарел) создать цилиндр и натянуть на него текстуру. Вращать цилиндр. Кстати, почему вы решили, что Swift 3D не справится?
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
[+6 30.10.12]
Регистрация: Jul 2005
Сообщений: 35
|
Я так решил, бегло изучив его функционал (возможно, что то упустил). Информации о нем на русском практически нет, в английском не очень силен. Я так понимаю, задача бы решалась в Swift'те, если бы можно было загрузить свою текстуру со стрелкой, но я не нашел там подобной функции.
|
|
|||||
|
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
[+6 30.10.12]
Регистрация: Jul 2005
Сообщений: 35
|
Цитата:
|
|
|||||
|
если ограничений по wmode=direct нет, то имо самый простой это #3 из того, что alatar расписал
пример для away3d: package { import away3d.containers.View3D; import away3d.entities.Mesh; import away3d.materials.TextureMaterial; import away3d.primitives.CylinderGeometry; import away3d.utils.Cast; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.geom.Vector3D; public class Main extends Sprite { private var view:View3D; private var cylinder:Mesh; [Embed(source = "arrow.png")] private const arrow_png:Class; public function Main():void { view = new View3D(); view.width = 256; view.height = 256; view.camera.z = 150; view.camera.y = 50; view.camera.lookAt(new Vector3D()); var mat:TextureMaterial = new TextureMaterial(Cast.bitmapTexture(arrow_png)); mat.bothSides = true; mat.alphaBlending = true; cylinder = new Mesh(new CylinderGeometry(50, 50, 100, 32, 1, false, false), mat); addChild(view); view.scene.addChild(cylinder); addEventListener(Event.ENTER_FRAME, render); } private function render(e:Event):void { cylinder.rotationY -= 1; view.render(); } } } но не уверен, что флешка здесь правильно покажет, ибо wmode=direct нужен |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:29. |
|
|
« Предыдущая тема | Следующая тема » |
|
|