|
|
|||||
Досадно. Что ж - буду знать.
про клиппинг ещё никогда не слышал а в Wiki написано про искажение звука =)
__________________
Black DRAGON хочет кушать Т_Т |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
|
|
|||||
ага, почему-то getRelativeMatrix3D(root).position не всегда дает адекватные величины, понять почему не сумел пока..
попробовал немного погрузится в тему (ну очень немного) в моих тестах нормально работает такой вариант: по цепочке родителей через containerMatrix3D.deltaTransformVector(vector) и vector.add(containerVector) гоним вектор объекта до верхнего предка и берем Vector3D.distance от него до viewPoint насколько оно грамотно/оптимально не знаю, но работает , пример |
|
|||||
клёва silin! чуть позже буду дома и гляну обязательно, + попробую написать простенький пример чего хочется добиться, наглядный пример лучший пример!
кстати мне до недавнего времени нравился мой метод сортировки, у которого взят за основу твой (правда старый): var array:Array = new Array(); var numChildren:int = this.numChildren; for (var childIndex:int = 0; childIndex < numChildren; childIndex++) { var sprite:DisplayObject = this.getChildAt(childIndex); try { var vector3D:Vector3D = sprite.transform.getRelativeMatrix3D(root).position; vector3D.x -= stage.stageWidth / 2; vector3D.y -= stage.stageHeight / 2; vector3D.z += Math.round(root.transform.perspectiveProjection.focalLength * 1); array.push({length:vector3D.length, sprite:sprite}); } catch (error:Error) { array.push({length:0, sprite:sprite}); } } array.sortOn('length', Array.DESCENDING); for (var i:Object in array) this.addChild(array[i].sprite); Если бы была возможность получить правильный вектор от точки обзора до объекта и правильный вектор нормали, то можно было бы найти правильный угол между этими векторами и определить лицевую и заднюю сторону спрайта. если на задний вид поставить visible=false а на передний visible=true не пришлось бы трогать addChild вообще, и кубик бы рисовался чётко и быстро )
__________________
Black DRAGON хочет кушать Т_Т Последний раз редактировалось DRAGOnoid; 24.04.2009 в 15:57. |
|
|||||
СПАСИБО ЕЩЁ РАЗ ВСЕМ ОГРОМНОЕ. послушав многие советы и конкретно пошаманив, наконец добился того что так долго хотел.
наконец дошло как парвильно можно получить вектор нормали (надо было root а я трогал stage) // вектор stage public function get vectorStage ():Vector3D { var vectorStage:Vector3D = new Vector3D(); try { vectorStage = this.transform.getRelativeMatrix3D(root).position; vectorStage.x -= stage.stageWidth / 2; vectorStage.y -= stage.stageHeight / 2; vectorStage.z += root.transform.perspectiveProjection.focalLength; } catch (error:Error){trace ('vector Stage - неможет быть найден');} return vectorStage; } // вектор нормаль public function get vectorNormal ():Vector3D { var vectorNormal:Vector3D = new Vector3D(); try { var matrix3D:Matrix3D = this.transform.getRelativeMatrix3D(root); vectorNormal.x = matrix3D.rawData[8] vectorNormal.y = matrix3D.rawData[9] vectorNormal.z = matrix3D.rawData[10] } catch (error:Error){trace ('vector Normal - неможет быть найден');} return vectorNormal; } вроде всё работает и без глюков! круто!
__________________
Black DRAGON хочет кушать Т_Т Последний раз редактировалось DRAGOnoid; 28.04.2009 в 14:59. |
Часовой пояс GMT +4, время: 23:48. |
|
« Предыдущая тема | Следующая тема » |
|
|