Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   API приложений и сред (http://www.flasher.ru/forum/forumdisplay.php?f=61)
-   -   [Papervision] Papervision 3d, как настроить камеру (http://www.flasher.ru/forum/showthread.php?t=130228)

zinchencko 21.09.2009 14:25

Papervision 3d, как настроить камеру
 
Вложений: 1
У меня возникла следующая проблема, как сделать так что бы грани помеченный красным небыли видны. Как настроить камеру, или может дело не в камере и есть другое решение проблемы.

Код.
Код AS3:

package
{
        import flash.events.Event;
 
        import org.papervision3d.core.utils.Mouse3D;
        import org.papervision3d.materials.ColorMaterial;
        import org.papervision3d.materials.WireframeMaterial;
        import org.papervision3d.objects.primitives.Plane;
        import org.papervision3d.view.BasicView;
        import org.papervision3d.view.layer.ViewportLayer;
        import org.papervision3d.view.layer.util.ViewportLayerSortMode;
        import org.papervision3d.materials.utils.MaterialsList;
        import org.papervision3d.objects.primitives.Cube;
 
        [SWF(width="640", height="480", backgroundColor="#b6bfc2", frameRate="60")]
        public class Test extends BasicView
        {
                private var mouse3D:Mouse3D;
                private var follower:Cube;
 
                public function Test()
                {
                        viewport.interactive = true;
                        Mouse3D.enabled = true;
                        mouse3D = viewport.interactiveSceneManager.mouse3D;
 
                        var redColorMaterial:ColorMaterial = new ColorMaterial(0xe5e8ec);
                        redColorMaterial.interactive = true;
 
                        var floor:Plane = new Plane(redColorMaterial, 2000, 2000, 10, 10);                       
 
                        var wareFrame:WireframeMaterial = new WireframeMaterial(0x3b4149, 100, 1)
 
                        var materialsList:MaterialsList = new MaterialsList();
                        materialsList.addMaterial(wareFrame, "front");
                        materialsList.addMaterial(wareFrame, "back");
                        materialsList.addMaterial(wareFrame, "top");
                        materialsList.addMaterial(wareFrame, "bottom");
                        materialsList.addMaterial(wareFrame, "right");
                        materialsList.addMaterial(wareFrame, "left");
 
                        follower = new Cube(materialsList, 300, 50, 300, 1, 1, 1, 0, 0);
 
                        scene.addChild(floor);                       
                        scene.addChild(follower);
 
                        camera.y = -230;
                        camera.zoom = 32;
 
                        var floorViewportLayer:ViewportLayer = new ViewportLayer(viewport, floor);
                        var followerViewportLayer:ViewportLayer = new ViewportLayer(viewport, follower);
 
                        viewport.containerSprite.sortMode = ViewportLayerSortMode.INDEX_SORT;       
                        floorViewportLayer.layerIndex = 0;
                        followerViewportLayer.layerIndex = 1;
 
                        viewport.containerSprite.addLayer(floorViewportLayer);
                        viewport.containerSprite.addLayer(followerViewportLayer);
 
 
                        startRendering();
                }
 
                override protected function onRenderTick(event:Event=null):void
                {
                        follower.x += (mouse3D.x - follower.x) * .1;
                        follower.y += (mouse3D.y - follower.y) * .1;
                        follower.z += (mouse3D.z - follower.z) * .1;
                        renderer.renderScene(scene, camera, viewport);
                }
 
        }
 
}


2morrowMan 22.09.2009 01:47

Может camera.focus поможет ?

zinchencko 22.09.2009 02:24

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

UPD: фокус он же по сути приближает/отдаляет сцену и все. Попробуй в код поставить camera.focus = 10; а потом camera.focus = 8; сама перспектива не изменяется, просто идет приближение или отдаление сцены.

UPD2: у меня была идея подвинуть все на сцене просто выше до той "Y" где эти грани пропадают и меня устраивает перспектива. Потом запихать это в отдельный класс и сместить на сцене. Но тут возникает другая проблема, которую я тоже не смог обойти. Как сделать viewport больше по высоте чем размеры stage.

получилось достичь результата по 2-му варианту. Но если кто знает как это можно сделать проще, велком.

drf 02.10.2009 18:41

Код AS3:

                                view.camera.x += (CAMERA_POSITION * Math.sin(newx /  960 * 360 * Math.PI / 180) -  view.camera.x) * 0.1; //stage.stageWidth
                    view.camera.z += (CAMERA_POSITION * Math.cos(newx / 960 * 360 * Math.PI / 180) -  view.camera.z) * 0.1; //stage.stageWidth
                          view.camera.y += (CAMERA_POSITION * newy / 690 - view.camera.y) * 0.1;

я так управляю камерой


Часовой пояс GMT +4, время: 13:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.