Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Xors3D

Xors3D Графический движок с поддержкой DirectX9

Ответ
 
Опции темы
Старый 04.04.2012, 20:41   #1
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Нормаль коллизии

Всё бы здорово только надо это порделать с анимированной моделью.Первая модель сложная вогнутая, но мне нужно узнать соприкосновение сферы с выгнутой частью этой модели. Кароче мне нужна нормаль к поверхности сферы и прикосающейся к ней анимированной модели. Что можете посоветовать?
(Offline)
 
Ответить с цитированием
Старый 04.04.2012, 23:34   #2
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Нормаль коллизии

Если у тебя есть точка на сфере, то от центра сферы к точке можешь найти вектор ты. Приведя его к единичной длине получишь нормаль к этой точке поверхности сферы.

Хоть бы схему нарисовал, да?

ЗЫ чувствую себя кэпом.
(Offline)
 
Ответить с цитированием
Старый 04.04.2012, 23:49   #3
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Нормаль коллизии

dsd, это априори известно, про сферу то, я еще упомянул модель мою, и нормаль к ней в той точке в которой соприкасается сфера и модель. Нормаль к поверхности сферы, легко. Нормаль к поверхности неопределенного 'анимированного' меша сложнее, и к тому же надо найти точку их соприкосновения.
(Offline)
 
Ответить с цитированием
Старый 04.04.2012, 23:55   #4
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Нормаль коллизии

А проверить все точки в радиусе ли сферы они или нет? А также проверить плоскости всех полигонов, а не ближе ли они к центру сферы, чем радиус оной? В чем проблема то? Или нужна команда с флагом которая все сама сделает?
(Offline)
 
Ответить с цитированием
Старый 05.04.2012, 00:03   #5
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Нормаль коллизии

dsd, до того как ты написал первый пост я уже это реализовал.)) На модели вертексы нужные красятся, сейчас у меня загвоздка как правильно нормаль из неё вытянуть. Помогеш мне? nx,ny,nz определил, но как правильно в глобал их передать?
(Offline)
 
Ответить с цитированием
Старый 05.04.2012, 00:07   #6
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Нормаль коллизии

xTform для чего создана была? А ваще всякие там матрицы смещения, поворота, масштаба. Ну синусы, косинусы разные.
(Offline)
 
Ответить с цитированием
Старый 05.04.2012, 00:12   #7
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Нормаль коллизии

dsd, да вот что то не выходит с tform'ом, а "всяки" это сложно. Ща попробую как то отбразить их, наверн через лайн, а то не пойму что вообще выходит. Кстать анимация довольно быстрая и меш бывает проваливается в сферу в первом же касании давольно глубоко, этим еще осложняется.
(Offline)
 
Ответить с цитированием
Старый 05.04.2012, 00:22   #8
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Нормаль коллизии

смотри. Есть полигоны. Для каждого полигона ты можешь найти его центр. Ну и радиус сферы внутри которой этот полигон точно поместится.
Проверить есть ли пересечение этих сфер просто. И ты это уже делал когда обратную кинематику делал. Если нет пересечения, значит полигон не касается. Если есть и касание по какой-то вершине или ребру, то нормаль это минус нормаль сферы к этой точке. А если касание происходит на полигоне то нормаль это нормаль плоскости совпадающей с полигоном.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
CRASHER (05.04.2012)
Старый 05.04.2012, 00:33   #9
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Нормаль коллизии

Пока на малой скорости проверяю дистанцию от точек. Если этого будет не достаточно то попробую, но пока сложновато понимаю как это... про то что ты сказал.
А глянь вот это как думаеш, должно работать?

		x=xVertexX(surf,Vertex)
		y=xVertexY(surf,Vertex)
		z=xVertexZ(surf,Vertex)
		xTFormPoint (x,y,z,Smash,0)					

		Nx=xVertexNX(surf,Verte)
		Ny=xVertexNY(surf,Verte)
		Nz=xVertexNZ(surf,Verte)
		xCameraProject(camera,Nx+xTFormedX(),Ny+xTFormedY(),Nz+xTFormedZ())
		x2#=xProjectedX()
		y2#=xProjectedY()
		xCameraProject(camera,xTFormedX(),xTFormedY(),xTFormedZ())
		
	xUpdateWorld ()
	xRenderWorld()
	xLine(xProjectedX(),xProjectedY(),x2,y2)
	xFlip()
(Offline)
 
Ответить с цитированием
Старый 05.04.2012, 00:40   #10
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Нормаль коллизии

Нормаль тоже тформить надо. А так че бы и не работать ей?
Но ты лучше кубик вытяни и ставь на тформленную точку и равняй по тформленному вектору, так оно наглядней по моему.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
CRASHER (05.04.2012)
Старый 05.04.2012, 00:43   #11
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Нормаль коллизии

dsd,лады попробую.
(Offline)
 
Ответить с цитированием
Старый 05.04.2012, 00:51   #12
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Нормаль коллизии

Хм, а ровнять вектор_пинчем и _явом? Линия получилось смотрит параллельно плоскости ксания. Не порядок...
(Offline)
 
Ответить с цитированием
Старый 05.04.2012, 01:10   #13
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Нормаль коллизии

О господи! xAlignToVector, же.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
CRASHER (05.04.2012)
Старый 05.04.2012, 21:58   #14
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Нормаль коллизии

ах да!) верно!))
(Offline)
 
Ответить с цитированием
Старый 05.04.2012, 22:02   #15
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Ответ: Нормаль коллизии

dsd, объясни подробней прошу, про то что если нормаль шара вычесть из точки то получу нормаль точки, или я тебя не понял? ( ПОСТ_8 )
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com