Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.04.2009, 14:08
DRAGOnoid вне форума Посмотреть профиль Отправить личное сообщение для DRAGOnoid Посетить домашнюю страницу DRAGOnoid Найти все сообщения от DRAGOnoid
  № 41  
Ответить с цитированием
DRAGOnoid
 
Аватар для DRAGOnoid

Регистрация: Jan 2004
Адрес: Moscow
Сообщений: 389
Отправить сообщение для DRAGOnoid с помощью ICQ
Досадно. Что ж - буду знать.

про клиппинг ещё никогда не слышал а в Wiki написано про искажение звука =)
__________________
Black DRAGON хочет кушать Т_Т

Старый 24.04.2009, 14:56
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 42  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,784
http://ru.wikipedia.org/wiki/%D0%9E%...BD%D0%B8%D0%B5

Старый 24.04.2009, 15:11
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 43  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
ага, почему-то getRelativeMatrix3D(root).position не всегда дает адекватные величины, понять почему не сумел пока..
попробовал немного погрузится в тему (ну очень немного)
в моих тестах нормально работает такой вариант:
по цепочке родителей через containerMatrix3D.deltaTransformVector(vector) и vector.add(containerVector) гоним вектор объекта до верхнего предка и берем Vector3D.distance от него до viewPoint
насколько оно грамотно/оптимально не знаю, но работает , пример

Старый 24.04.2009, 15:28
DRAGOnoid вне форума Посмотреть профиль Отправить личное сообщение для DRAGOnoid Посетить домашнюю страницу DRAGOnoid Найти все сообщения от DRAGOnoid
  № 44  
Ответить с цитированием
DRAGOnoid
 
Аватар для DRAGOnoid

Регистрация: Jan 2004
Адрес: Moscow
Сообщений: 389
Отправить сообщение для DRAGOnoid с помощью ICQ
клёва silin! чуть позже буду дома и гляну обязательно, + попробую написать простенький пример чего хочется добиться, наглядный пример лучший пример!

кстати мне до недавнего времени нравился мой метод сортировки, у которого взят за основу твой (правда старый):

Код AS3:
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);
получаю таким образом расстояние, вбиваю в массив, сортирую и добавляю на сцену. сортировать по Z координате вообще тупо так как у кубика бывает 4 граени равноудалены от плоскости - root но двигая кубик по x координате грани так и не сортируются.

Если бы была возможность получить правильный вектор от точки обзора до объекта и правильный вектор нормали, то можно было бы найти правильный угол между этими векторами и определить лицевую и заднюю сторону спрайта. если на задний вид поставить visible=false а на передний visible=true не пришлось бы трогать addChild вообще, и кубик бы рисовался чётко и быстро )
__________________
Black DRAGON хочет кушать Т_Т


Последний раз редактировалось DRAGOnoid; 24.04.2009 в 15:57.
Старый 28.04.2009, 12:17
DRAGOnoid вне форума Посмотреть профиль Отправить личное сообщение для DRAGOnoid Посетить домашнюю страницу DRAGOnoid Найти все сообщения от DRAGOnoid
  № 45  
Ответить с цитированием
DRAGOnoid
 
Аватар для DRAGOnoid

Регистрация: Jan 2004
Адрес: Moscow
Сообщений: 389
Отправить сообщение для DRAGOnoid с помощью ICQ
СПАСИБО ЕЩЁ РАЗ ВСЕМ ОГРОМНОЕ. послушав многие советы и конкретно пошаманив, наконец добился того что так долго хотел.

наконец дошло как парвильно можно получить вектор нормали (надо было root а я трогал stage)

Код AS3:
//	вектор 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;
}
а так же нормаль к плоскости

Код AS3:
//	вектор нормаль
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;
}
получая угол межу этими векторами мы легко определяем какой стороной к нам плоскость, и в зависимости от этого скрываем или показываем:
Код AS3:
public	function resort ():void {
var angle:Number = Vector3D.angleBetween(this.vectorStage, this.vectorNormal);
if (angle >= Math.PI/2)
	this.visible = false;
else
	this.visible = true;
}
вроде всё работает и без глюков! круто!
__________________
Black DRAGON хочет кушать Т_Т


Последний раз редактировалось DRAGOnoid; 28.04.2009 в 14:59.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:45.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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