С сетапом плечевого сустава всегда возникают проблемы при привязке к скелету. Мне попалось интересное решение в Майке от TD Matt и я портировал его в 3dsMax с помощью скрипта-контроллера и вспомогательных элементов.

Видео как работает данная кость

Подобный сетап состоит из следующих элементов

где Shoulder Bone — дополнительная кость, меняющая свое поведение относительно вращения кости с помощью всмогательного скрипта

Sphere with texture coords — сфера с текстурными координатами, позволяющая с использованием луча и точки пересечения перевести вращение кости в текстурные координаты данной сферы

Origin bone — используется для указания положения начала луча

Target bone — используется для указания направления луча

?дея заключается в следующем: перевести вращение кости в пространство текстурных координат сферы с помощью пересечения луча с поверхностью сферы. Текстурные координаты позволят нам заскриптовать положение дополнительной кости, избежав использования вращений Ейлера кости и соответственно избежав перекручивания, гипбел лока и прочих проблем.

Скрипт используется в контроллере следующий:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
pos1 = rootPos.pos
pos2 = endPos.pos
rot = [rotController.x_rotation, rotController.y_rotation, rotController.z_rotation]

rm = RayMeshGridIntersect() --create an instance of the Reference Target

rm.Initialize 10 -- init voxel grid 10x10x10
rm.addNode theSphere -- add sphere to the grid
rm.buildGrid()

res=rot.y

hits = rm.intersectSegment pos2 pos1 false
if (hits > 0) then
(
theIndex = rm.getClosestHit()
theFace = rm.getHitFace theIndex
theBary = rm.getHitBary theIndex

-- Get the texture face
face = getTVFace theSphere theFace

-- Get the UVW verts of the face
tv1 = getTVert theSphere face.x
tv2 = getTVert theSphere face.y
tv3 = getTVert theSphere face.z

tv = tv1 * theBary.x + tv2 * theBary.y + tv3 * theBary.z

res = tv.y
print res
)

rm.Free()
res * 50.0

 

Скачать сцену для 3dsMax (начиная с версии 2009) — ShoulderBone

Плечевая кость в 3dsMax
Метки:            

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *