Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Вопрос по Papervision3D (http://www.flasher.ru/forum/showthread.php?t=113098)

mre 18.06.2008 17:57

Вопрос по Papervision3D
 
Вложений: 2
Возможно есть активные пользователя этого продукта.
Подскажите как можно избежать искажений когда объекты находятся близко друг к другу. Уже мучаюсь довольно долгое время с этим.
Вот что я имею в виду.Вложение 19763
Вот файл swf, где можно это увидеть Вложение 19764 Вращать камеру можно стрелочками.
У всех объектов разбиение на 5 сегментов. Пробовал увеличивать до 20, это не помогло а привело к снижению производительности.
Еще если камеру опустить под пол, то будут видны куски объектов хотя они находятся чуть выше пола, я думаю это та же проблема.

Rzer 19.06.2008 00:48

Прикрепи тот же пример только с wire материалом - для большей наглядности. Судя по всему нужно добавить сегментов на полу или разбить его на отдельные объекты..

mre 19.06.2008 11:37

Да, если разбить на большее число сегментов, проблема частично решается, но производительность очень низкая. Да и все равно косяки есть только мельче.
По другому никак? Или может быть какой-либо другой 3D движок решает эту проблему.

nauroman 19.06.2008 12:08

пробуй away3d - он, вроде, круче работает с отсечением

mre 19.06.2008 15:25

Я понял в чем проблема и это не зависит от фреймворка.
У соприкасающихся объектов должны совпадать разбиения (не количество разбиений а их координаты).

Яски 19.06.2008 20:10

Решение одно - больше НИКОГДА не использовать papervision, только
alternativa

undefined 19.06.2008 20:57

Это артефакты z-сортировки, есть по-меньшей мере 2 решения: строить для сцены bsp-дерево (alternativa), но тогда придется отказаться от подвижности (можно летать камерой-смотреть, но изменять ничего нельзя), либо z-bufer, где можно менять сцену как угодно +пересекающиеся обьекты тоже отрисуются правильно, но тогда жертвуешь размерами экрана - большие битмапы flash рисует медленее вектора.

Яски 19.06.2008 21:12

Еще как вариант честная z- сортировка.

undefined 20.06.2008 20:20

честная z-сортировка порождает артефакты нарисованные в первом посте.

Яски 20.06.2008 23:42

в первом посте изображена херня, а не честная z сортировка

undefined 21.06.2008 06:46

на рисунке как раз пример классической "честной" сортировки и её артефакты, некоторые сцены с помощью сортировки правильно отрисовать невозможно.

Exey 29.06.2008 18:46

Используй ViewportLayer, пол кладется в один
Код:

floorLayer = new ViewportLayer(viewport, null);
viewport.containerSprite.addLayer(floorLayer);
floorLayer.getChildLayer(floor, true).layerIndex = 1;
layersToRender.push(floorLayer);

вертикальные плейны в другой слой

и рендерим теперь по другому
Код:

renderer.renderLayers(scene, camera, viewport, layersToRender);
Подробней у Энди написано http://blog.zupko.info/?p=129

mre 30.06.2008 11:39

Спасибо!
Весьма ценная информация.

DimensionB 01.07.2008 14:19

Насчет ViewportLayer, по крайней мере раньше он был только в ветке Effects, а во всех остальных не было.

Я решал такую проблему несколько иным путем. Создавал два вьюпорта и рендерил в один подложку(в твоем случае серый Plane), а во второй все остальное, можно даже пользоваться одной сценой, только прятать ненужные обьекты перед рендером.

DimensionB 01.07.2008 14:22

Если интересует пример пиши в личку, покажу.

mre 01.07.2008 15:21

Тут есть проблема. Если камера опустится ниже уровня пола, то надо будет поменять уровни viewport, это надо как-то отслеживать как я понимаю.
Или это производится автоматически?

DimensionB 02.07.2008 13:08

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

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

Попробуй не Papervision3D, а Away3D. В нем реализована честная z-сортировка, и он автоматически делит полигоны. В работе он несколько похож на Papervision3D(правда на более ранние версии), так как ноги у него оттуда растут.

TWETTI 27.09.2008 19:58

Народ у меня вопрос по papervision3D. Можно ли вместо текстуры использовать swf файл или несколько мувиклипов? Если можно то как писать код.

mre 27.09.2008 21:29

Цитата:

Сообщение от TWETTI (Сообщение 766807)
Народ у меня вопрос по papervision3D. Можно ли вместо текстуры использовать swf файл или несколько мувиклипов? Если можно то как писать код.

А как без текстуры то?
Чтобы затекстурить MovieClip-ом, используйте MovieMaterial или MovieAssetMaterial.

TWETTI 27.09.2008 22:25

Цитата:

Сообщение от mre (Сообщение 766823)
А как без текстуры то?
Чтобы затекстурить MovieClip-ом, используйте MovieMaterial или MovieAssetMaterial.

Пожалуйста напиши кусок кода для MovieMaterial. А то я не очень понимаю в ООП.

BlooDHounD 27.09.2008 23:18

TWETTI, а зачем Вы тогда в АС3 полезли? и уж тем болие в papervision3D?

TWETTI 28.09.2008 00:01

Цитата:

Сообщение от BlooDHounD (Сообщение 766833)
TWETTI, а зачем Вы тогда в АС3 полезли? и уж тем болие в papervision3D?

AS 2 и 1 я отличноо знаю. AS3 начал месяц назад изучать. Сейчас уже много чего переделал в папервижн. И нигде ненайду как сделать чтобы тело покрывалось не jpg а мувиклипом. Помогите кто делал.

mre 28.09.2008 12:50

Если ты сделал с BitmapMaterial, то в чем сложность с MovieMaterial?
Код:

var material:MovieMaterial = new MovieMaterial(sourceMovie);
Где sourceMovie - твой MovieClip. В конструкторе есть другие параметры, значение которых предлагаю изучить самому.

TWETTI 28.09.2008 13:18

У меня все работает если я напишу:
var material:MovieAssetMaterial = new MovieAssetMaterial("myClip", false);
material.doubleSided = true;
material.animated= true;
Но мне нужно чтобы была интеравктивность. А в MovieAssetMaterial нет интерактивности. Что делать? Я неразберусь с MovieMaterial.

mre 28.09.2008 18:12

С чего ты взял, что нет интерактивности?
MovieAssetMaterial наследуется от MovieMaterial, у которого есть свойство интерактивности.
Код:

material.interactive = true;

TWETTI 28.09.2008 18:24

Цитата:

Сообщение от mre (Сообщение 766901)
С чего ты взял, что нет интерактивности?
MovieAssetMaterial наследуется от MovieMaterial, у которого есть свойство интерактивности.
Код:

material.interactive = true;

Я сделал так как ты сказал и флеш мне написал :
Error #1056: Не удается создать свойство interactive в org.papervision3d.materials.MovieAssetMaterial.

Знаешь почему?

mre 28.09.2008 20:01

Видимо у тебя версия Papervision меньше 2.0

TWETTI 28.09.2008 20:28

Да, ты прав. У меня версия 1.5. Как проверю на 2 напишу...

TWETTI 28.09.2008 21:36

Скачал, установил я Papervision 2. Вылезла новая ошибка:
1046: Type was not found or was not a compile-time constant: Plane.
Вот кусок кода там где ошибка:
var contender:Sprite;
var camera :Camera3D;
var escena:Scene3D;
var Obj3D:Plane;

mre 28.09.2008 21:47

Потому что в 2.0 произошли некоторые изменения в структуре фреймворка.
В том числе изменился путь к классу Plane.
Код:

import org.papervision3d.objects.primitives.Plane;
А вообще тебе лучше посмотреть tutorial по 2.0, поскольку твой код для 1.5 придется частично переписать.

TWETTI 29.09.2008 18:54

Я хочу сделать на Papervision3D 2.0 вот это -->> http://www.metacafe.com/watch/1240319// Но там код для PV3D 1.5
Есть ли у кого есть исходник. чтобы было как в видео но написано на PV3D 2.0

mre 29.09.2008 20:51

Цитата:

Сообщение от TWETTI (Сообщение 767095)
Я хочу сделать на Papervision3D 2.0 вот это

Дак сделать или чтобы сделали? Это разные вещи.
И вообще, уже написан готовый фреймворк, которым ты и то не можешь воспользоваться, хотя в нем все элементарно и просто.
В чем проблема написать самому?
Если в недостатке навыков программирования, то здесь тебе не помогут.

TWETTI 29.09.2008 21:04

Как мне в papervision3d 1.5 сделать интерактивность? Или это невозможно?

mre 29.09.2008 21:25

Ну и лентяй.
http://www.rockonflash.com/blog/?p=58
Качай исходник и смотри.

TWETTI 29.09.2008 21:32

Последний вопрос...как в papervision3d 2.0 сделать:
Код:

camera.hover(0,(200-mouseX)*.01, (200-mouseY)*.01);
camera.hover есть только в papervision3d 1.5.

mre 29.09.2008 21:48

Код:

camera.orbit(pitch:Number, yaw:Number, useDegrees:Boolean = true, target:DisplayObject3D = null):void
Смысл тот же.

alekson 17.01.2009 23:27

дайте пжста сылки где рассматриваются основные моменты работы с pv3d

AL.exe 18.01.2009 01:13

http://tinyurl.com/8eb56s - тут есть, первая ссылка


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

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