|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
[+6 04.02.09]
Регистрация: Jan 2009
Сообщений: 54
|
Papervision3d помогите не много переделать код...
http://pv3d.org/page/4/
На этой странице есть пример куба, на котором использован эффект shade. Так вот как переделать его, чтобы этот эффект не использовался,я уже измучился, удалил функцию, что-то подкорректировал но ничего не получается, только куча ошибок. Нужен тот же самый куб, но без эффектов(сглаживания) Добавлено через 1 минуту вот его код, надо его упростить.. package { import flash.display.Bitmap; import flash.events.Event; import org.papervision3d.lights.PointLight3D; import org.papervision3d.materials.BitmapMaterial; import org.papervision3d.materials.shaders.PhongShader; import org.papervision3d.materials.shaders.ShadedMaterial; import org.papervision3d.materials.shaders.Shader; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.view.BasicView; [SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")] public class CubeWithDifferentSides extends BasicView { [Embed(source="assets/back.jpg")] private var backAsset:Class; [Embed(source="assets/bottom.jpg")] private var bottomAsset:Class; [Embed(source="assets/front.jpg")] private var frontAsset:Class; [Embed(source="assets/left.jpg")] private var leftAsset:Class; [Embed(source="assets/right.jpg")] private var rightAsset:Class; [Embed(source="assets/top.jpg")] private var topAsset:Class; private var light:PointLight3D; private var cube:Cube; public function CubeWithDifferentSides() { var materialsList:MaterialsList = new MaterialsList(); light = new PointLight3D(); materialsList.addMaterial(createShadedMaterial( new backAsset() ), "back"); materialsList.addMaterial(createShadedMaterial( new bottomAsset() ), "bottom"); materialsList.addMaterial(createShadedMaterial( new frontAsset() ), "front"); materialsList.addMaterial(createShadedMaterial( new leftAsset() ), "left"); materialsList.addMaterial(createShadedMaterial( new rightAsset() ), "right"); materialsList.addMaterial(createShadedMaterial( new topAsset() ), "top"); cube = new Cube(materialsList, 500, 500, 500, 5, 5, 5); scene.addChild(cube); startRendering(); } private function createShadedMaterial(bitmap:Bitmap):ShadedMaterial { var bitmapMaterial:BitmapMaterial = new BitmapMaterial(bitmap.bitmapData, true); var shader:Shader = new PhongShader(light, 0xffffff, 0x333333, 10, bitmap.bitmapData, bitmap.bitmapData); var shadedMaterial:ShadedMaterial = new ShadedMaterial(bitmapMaterial, shader); return shadedMaterial; } override protected function onRenderTick(event:Event=null):void { cube.rotationY += (viewport.containerSprite.mouseX - cube.rotationY) * .1; cube.rotationX += (viewport.containerSprite.mouseY - cube.rotationX) * .1; renderer.renderScene(scene, camera, viewport); } } } Код версии для ActionScript 3.0 Последний раз редактировалось MafiaBoy; 11.01.2009 в 18:05. |
|
|||||
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
|
|
|||||
[+6 04.02.09]
Регистрация: Jan 2009
Сообщений: 54
|
код для ActionScript 3.0
Добавлено через 54 секунды Obi спасибо но я чёто не понял Добавлено через 7 минут не стандартное решение, но всё же... А возможно ли как то сделать стороны куба ссылками на страницы в интернете? Чтоб они открывались при клике мышкой по гране куба.... |
|
|||||
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Цитата:
UPD: Мой предыдущий пост был намеком на то, что вместо шейдерного материала нужно подставлять обычный. Не нужно делать слово в слово как я на писал, быдлокод ибо. Последний раз редактировалось Obi; 11.01.2009 в 19:26. Причина: upd |
|
|||||
[+6 04.02.09]
Регистрация: Jan 2009
Сообщений: 54
|
я же делаю кубик для браузера.
Я вот не знаю, как это реализовать, в сети не видел подобных примеров, чтобы кликнув по грани куба, открыть интернет-ресурс, причём каждая грань куба имеет свой ресурс Добавлено через 8 минут да, немножко по быдляцки получилось, но принцип я усвоил а как сделать грани-ссылками на ресурсы в сети? |
|
|||||
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
А, я думал отображать странички в кубе надо...
RTFM, собственно. http://docs.pv3d.org/org/papervision...ne3DEvent.html http://docs.pv3d.org/org/papervision...ml#interactive Далее вешаете на модель евент, и проверяете материал отозвался, типа: |
|
|||||
[+6 04.02.09]
Регистрация: Jan 2009
Сообщений: 54
|
Obi
спасибо конечно. Но я всё таки так не понял как добавить к коду ниже, к уже определённому функции откытия ресурсов при клике по граням, у меня ведь не сколько граней, и по каждой из них должен открываться определённый в коде ресурс.. |
|
|||||
Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
|
Включаем голову, выключаем лень и видим, что все очень просто:
package { import flash.display.Bitmap; import flash.events.Event; import org.papervision3d.lights.PointLight3D; import org.papervision3d.materials.BitmapMaterial; import org.papervision3d.materials.shaders.PhongShader; import org.papervision3d.materials.shaders.ShadedMaterial; import org.papervision3d.materials.shaders.Shader; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.view.BasicView; [SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")] public class CubeWithDifferentSides extends BasicView { [Embed(source="assets/back.jpg")] private var backAsset:Class; [Embed(source="assets/bottom.jpg")] private var bottomAsset:Class; [Embed(source="assets/front.jpg")] private var frontAsset:Class; [Embed(source="assets/left.jpg")] private var leftAsset:Class; [Embed(source="assets/right.jpg")] private var rightAsset:Class; [Embed(source="assets/top.jpg")] private var topAsset:Class; private var light:PointLight3D; private var cube:Cube; public function CubeWithDifferentSides() { var materialsList:MaterialsList = new MaterialsList(); light = new PointLight3D(); materialsList.addMaterial(new BitmapMaterial( new backAsset(), true ), "back"); materialsList.addMaterial(new BitmapMaterial( new bottomAsset(), true ), "bottom"); materialsList.addMaterial(new BitmapMaterial( new frontAsset(), true ), "front"); materialsList.addMaterial(new BitmapMaterial( new leftAsset(), true ), "left"); materialsList.addMaterial(new BitmapMaterial( new rightAsset(), true ), "right"); materialsList.addMaterial(new BitmapMaterial( new topAsset(), true ), "top"); cube = new Cube(materialsList, 500, 500, 500, 5, 5, 5); scene.addChild(cube); cube.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onCubeClick); startRendering(); } override protected function onRenderTick(event:Event=null):void { cube.rotationY += (viewport.containerSprite.mouseX - cube.rotationY) * .1; cube.rotationX += (viewport.containerSprite.mouseY - cube.rotationX) * .1; renderer.renderScene(scene, camera, viewport); } private function onCubeClick(e:InteractiveScene3DEvent):void { switch(e.face3d.material.name) { case 'front': navigateToURL(new URLRequest('http://mySite.com/1')); break; case 'back': navigateToURL(new URLRequest('http://mySite.com/2')); break; case 'left': navigateToURL(new URLRequest('http://mySite.com/3')); break; case 'right': navigateToURL(new URLRequest('http://mySite.com/4')); break; } } } } |
|
|||||
[+6 04.02.09]
Регистрация: Jan 2009
Сообщений: 54
|
спасибо Obi
respect to you Добавлено через 20 часов 12 минут интересно почему у меня не работает код. Следующая ошибка TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать CubeWithDifferentSides_backAsset@42831f1 в flash.display.BitmapData. at CubeWithDifferentSides()[C:\Documents and Settings\User\Рабочий стол\MagicCube\CubeWithDifferentSides.as:45] Добавлено через 20 часов 20 минут Код не работает,только чёрный экран на странице, при компиляции также ошибок не было! Но вот только дебагер замечает что что-то не так.. Добавлено через 20 часов 42 минуты Obi помоги please Добавлено через 21 час 27 минут Я уже измучился, что это за проблема? |
Часовой пояс GMT +4, время: 18:15. |
|
« Предыдущая тема | Следующая тема » |
|
|