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

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.07.2013, 18:42
vorodis2 вне форума Посмотреть профиль Отправить личное сообщение для vorodis2 Найти все сообщения от vorodis2
  № 1  
Ответить с цитированием
vorodis2

Регистрация: Feb 2011
Адрес: Украина Днепропетровск
Сообщений: 106
По умолчанию Помогите пустить правильно луч

Есть две точки, мне нужно пустить луч и узнать что находиться на его пути.

Есть
http://vorodis2.com/test/raytest/
Исходник
http://vorodis2.com/test/raytest/RayAway.rar

Проблема в
Код AS3:
//Что за параметры.  строка 227
var v0:Vector3D = new Vector3D(-500,0,-500);
var v1:Vector3D = new Vector3D(+500,0,-500); 
var v2:Vector3D = new Vector3D( +500, 0, +500);  
 
var ins:Vector3D = ray.getRayToTriangleIntersection(_p0, _p1, v0, v1, v2);
 
// ins  Всегда null даже когда визуально он перекисает Mesh
Не понимаю что за параметры эти v0, v1, v2. И вобще как работает этот луч.

Старый 20.07.2013, 20:16
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 2  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Должно быть
Код AS3:
var ins:Vector3D = ray.getRayToTriangleIntersection(_p0, _p1, v0, v1, v2);
_p0 - начало луча
_p1 - конец луча
v0, v1, v2 - это вершины треугольника и если луч пересечет треугольнак, то появится точка пересечения

vorodis2, исодник смотрел можно так
Код AS3:
		private function testRayDinam():void {
			var ray:Ray = new Ray();
			//Что за параметры.
			var v0:Vector3D = new Vector3D(-500,0,-500);
			var v1:Vector3D = new Vector3D(+500,0,-500); 
			var v2:Vector3D = new Vector3D( +500, 0, +500); 	
 
			var ins:Vector3D = ray.getRayToSphereIntersection(_p0, _p1, _cube.position,50)
			//getRayToTriangleIntersection(_p0, _p1, v0, v1, v2);
 
 
			if (ins) {
				oc.getChildAt(0).x = ins.x;
				oc.getChildAt(0).y = ins.y;
				oc.getChildAt(0).z = ins.z;
				oc.getChildAt(0).visible = true;
			}else {
				oc.getChildAt(0).visible = false;
			}
		}
Почти работает глубоко не вникал.
Очевидно, что-бы получить таким образом пересечение луча и модели нужно проверять все полигоны в модели на предмет пересечения с лучем.
__________________
Гоночка

Старый 20.07.2013, 21:29
vorodis2 вне форума Посмотреть профиль Отправить личное сообщение для vorodis2 Найти все сообщения от vorodis2
  № 3  
Ответить с цитированием
vorodis2

Регистрация: Feb 2011
Адрес: Украина Днепропетровск
Сообщений: 106
Я и сам начел догадываться что это за v0, v1, v2 но до Вашего поста отказывался в это верить))). Получается мне для обнаружения точки пересечения нужно перебрать весь массив треугольников. Может есть уже реализованный данный метод, так как есть же луч от курсора, может где то его можно найти, что бы свои грабли не городить??????

На счет getRayToSphereIntersection спасибо, но мне увы он не нужен, у меня сложные модели, это я так для тестирования.

Старый 20.07.2013, 21:58
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 4  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Цитата:
На счет getRayToSphereIntersection спасибо, но мне увы он не нужен, у меня сложные модели, это я так для тестирования.
Я думаю всё дело как раз в сложных моделях. Очевидно что будут тормоза. Поэтому надо делать очень сильное лоу поли, брать матрицу модели и применять её к лоу-поли модели и потом пускать луч.
Если это персонаж, я бы сделал куб для туловища и куб для головы, пользователь ведь не изверг зачем ему калечить модели. А даже если он каким-то чудом отстрелит модели ногу к примеру, то что потом делать с моделью - она должна будет ползти что-ли?
__________________
Гоночка

Старый 20.07.2013, 23:37
vorodis2 вне форума Посмотреть профиль Отправить личное сообщение для vorodis2 Найти все сообщения от vorodis2
  № 5  
Ответить с цитированием
vorodis2

Регистрация: Feb 2011
Адрес: Украина Днепропетровск
Сообщений: 106
Не у меня другая ситуация. У меня есть N (около 200) моделей 10-500 тысяч пол., и есть задача разработать метод наполнения любой из них мелкими примитивами, то есть если примитив находиться в нутри модели он существует, ну и у меня на вскидку их там 100-200 и это по всем треугольникам из модели))), временем расчета можно, относительно пренебречь, но что то мне подсказывает что если это будет сек 5, это будет чудо)))))

Может подскажете где можно нарыть обкатанный класс, для перебора Ray по вершинам?

Старый 07.08.2013, 16:36
vorodis2 вне форума Посмотреть профиль Отправить личное сообщение для vorodis2 Найти все сообщения от vorodis2
  № 6  
Ответить с цитированием
vorodis2

Регистрация: Feb 2011
Адрес: Украина Днепропетровск
Сообщений: 106
Сделал.
http://vorodis2.com/test/rayAway/
Вдруг кому пригодиться. Там есть еще генерация меша из кусков другова меша.
http://vorodis2.com/test/rayAway/RayAway.rar

Создать новую тему Ответ Часовой пояс GMT +4, время: 01:20.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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