forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Нормаль коллизии (http://forum.boolean.name/showthread.php?t=16596)

CRASHER 04.04.2012 20:41

Нормаль коллизии
 
Всё бы здорово только надо это порделать с анимированной моделью.Первая модель сложная вогнутая, но мне нужно узнать соприкосновение сферы с выгнутой частью этой модели. Кароче мне нужна нормаль к поверхности сферы и прикосающейся к ней анимированной модели. Что можете посоветовать?

dsd 04.04.2012 23:34

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

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

ЗЫ чувствую себя кэпом.

CRASHER 04.04.2012 23:49

Ответ: Нормаль коллизии
 
dsd, это априори известно, про сферу то, я еще упомянул модель мою, и нормаль к ней в той точке в которой соприкасается сфера и модель. Нормаль к поверхности сферы, легко. Нормаль к поверхности неопределенного 'анимированного' меша сложнее, и к тому же надо найти точку их соприкосновения.

dsd 04.04.2012 23:55

Ответ: Нормаль коллизии
 
А проверить все точки в радиусе ли сферы они или нет? А также проверить плоскости всех полигонов, а не ближе ли они к центру сферы, чем радиус оной? В чем проблема то? Или нужна команда с флагом которая все сама сделает?

CRASHER 05.04.2012 00:03

Ответ: Нормаль коллизии
 
dsd, до того как ты написал первый пост я уже это реализовал.)) На модели вертексы нужные красятся, сейчас у меня загвоздка как правильно нормаль из неё вытянуть. Помогеш мне? nx,ny,nz определил, но как правильно в глобал их передать?

dsd 05.04.2012 00:07

Ответ: Нормаль коллизии
 
xTform для чего создана была? А ваще всякие там матрицы смещения, поворота, масштаба. Ну синусы, косинусы разные.

CRASHER 05.04.2012 00:12

Ответ: Нормаль коллизии
 
dsd, да вот что то не выходит с tform'ом, а "всяки" это сложно. Ща попробую как то отбразить их, наверн через лайн, а то не пойму что вообще выходит. Кстать анимация довольно быстрая и меш бывает проваливается в сферу в первом же касании давольно глубоко, этим еще осложняется.

dsd 05.04.2012 00:22

Ответ: Нормаль коллизии
 
смотри. Есть полигоны. Для каждого полигона ты можешь найти его центр. Ну и радиус сферы внутри которой этот полигон точно поместится.
Проверить есть ли пересечение этих сфер просто. И ты это уже делал когда обратную кинематику делал. Если нет пересечения, значит полигон не касается. Если есть и касание по какой-то вершине или ребру, то нормаль это минус нормаль сферы к этой точке. А если касание происходит на полигоне то нормаль это нормаль плоскости совпадающей с полигоном.

CRASHER 05.04.2012 00:33

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

Код:

                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()


dsd 05.04.2012 00:40

Ответ: Нормаль коллизии
 
Нормаль тоже тформить надо. А так че бы и не работать ей?
Но ты лучше кубик вытяни и ставь на тформленную точку и равняй по тформленному вектору, так оно наглядней по моему.

CRASHER 05.04.2012 00:43

Ответ: Нормаль коллизии
 
dsd,лады попробую.

CRASHER 05.04.2012 00:51

Ответ: Нормаль коллизии
 
Хм, а ровнять вектор_пинчем и _явом? Линия получилось смотрит параллельно плоскости ксания. Не порядок...

dsd 05.04.2012 01:10

Ответ: Нормаль коллизии
 
О господи! xAlignToVector, же.

CRASHER 05.04.2012 21:58

Ответ: Нормаль коллизии
 
ах да!) верно!))

CRASHER 05.04.2012 22:02

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

dsd 05.04.2012 22:35

Ответ: Нормаль коллизии
 
Нарисуй схему уже. Там по разному. Тут уже больше термех, чем математика начинается. Что я тебе три семестра по памяти пересказать должен? А вообще бросай бэйсик, раз начал зарываться в детали, то даже на нем ничего не напишешь. Только выбери приличный язык где память руками выделять не надо. Там копаться будет интересней, чем с бэйском.

CRASHER 05.04.2012 22:48

Ответ: Нормаль коллизии
 
А какие языки знаеш которые подошли бы под это определение?
По теме есть вопрос нормали ложаться параллельно плоскости, как бы ты повернул ее. Ничего в голову не приходит?

CRASHER 05.04.2012 23:11

Ответ: Нормаль коллизии
 
Нашел в энете, нормаль к плоскости по трем точкам можно найти через формулы:
Nx=((y1-y2)*(z3-z2)-(z1-z2)*(y3-y2))
Ny=((z1-z2)*(x3-x2)-(x1-x2)*(z3-z2))
Nz=((x1-x2)*(y3-y2)-(y1-y2)*(x3-x2))

Мож кому поможет.

dsd 05.04.2012 23:42

Ответ: Нормаль коллизии
 
Я знаю только бэйсик и издали плюсы. Наверно ява или си.

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

dsd 05.04.2012 23:43

Ответ: Нормаль коллизии
 
Цитата:

Сообщение от CRASHER (Сообщение 224682)
Нашел в энете, нормаль к плоскости по трем точкам можно найти через формулы:
Nx=((y1-y2)*(z3-z2)-(z1-z2)*(y3-y2))
Ny=((z1-z2)*(x3-x2)-(x1-x2)*(z3-z2))
Nz=((x1-x2)*(y3-y2)-(y1-y2)*(x3-x2))

Мож кому поможет.

У тебя есть два вектора лежащих в плоскости, перемножь их

CRASHER 06.04.2012 01:19

Ответ: Нормаль коллизии
 
Цитата:

Сообщение от dsd (Сообщение 224685)
У тебя есть два вектора лежащих в плоскости, перемножь их

Хм, ты про что? Я нашел нормаль без ксорсоблицевских команд, все работает, теперь буду проверять её с отраженной нормалью сферы и двигать сферу соответственно, с закруткой и вращением))


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot