Нужно сделалать меш похожий на капсулу.но другого масштаба и наложить на неё скелет. Потому что если наложить скелет на просто растянутый обьект он сильно искажается т.к scale просто меняет расстояние между вершинами(.Как можно это исправить? Должно получится хотябы что-то похожее на это ( YouTube Я сделал 3 кости - позовнок и 2 кости прикрепленных к нему,для деформации меша.
Уже который день мучаюсь с этим мешем =(
p.s i'm bad english ,так что spinе - это позвонки
Сообщение отредактировал defGMDefeloper - Четверг, 08 Февраля 2018, 17:56
- кол-во позвонков тоже меняется.И форма этой самой капсулы вообще-то(.Разве что нарисовать её в большом "разрешение "(побольше вершин) чтобы если было много позвонков,можно было нормально скелет наложить,но это костыль.
Лучше всего как-то програмно отрисовать эту капсулу - наложить скелет ,ну а дальше уже деформировать.А вот как её нарисовать я не знаю.
Сообщение отредактировал defGMDefeloper - Четверг, 08 Февраля 2018, 18:57
defGMDefeloper, ну такой костыль точно делать не стоит. Ну первое что приходит в голову, это сделать кольцо поликов, и добавлять их в массив меша, по необходимости.
Добавлено (08 Февраля 2018, 19:03) --------------------------------------------- roma3fon, еще как вариант, это сделать шары вокруг всех костей, и потом на них проецировать сетку, но это может оказаться очень сложно в реализации
во во,пробовал с шарами.не вышло(.Я если честно с таким ещё не сталкивался.Писал разные алгоритмы,сис-мы,а вот по графической части я профан. Совсем не понимаю связь между вершинами нормалями и треугольниками( Вот по логике же достаточно точек и между какими точками рисовать А тут тебе и точки и нормали и треугольники.Ну ещё куда текстуру класть UV.С этим пока ещё рано разбираться.
Ещё есть идеи как можно сделать?).
Сообщение отредактировал defGMDefeloper - Четверг, 08 Февраля 2018, 19:59
defGMDefeloper, нормали можно считать автоматически, что бы с uv не париться можно написать, что то вроде триплейн шейдера (на гитхабе видел готовые решения), а само постороение меша триугольниками, а триугольников точками, несложное, тут главное с логикой постороения
нарисовал програмно цилиндр.пока что без сфер по концам)трубка короче.
Код
List<Vector3> v = new List<Vector3>(); List<int> t = new List<int>(); float radius = 1, time = 0.05f; for (int c = -spineCount/2; c < spineCount/2; c++) { for (float i = -radius; i < radius; i += time) { float z = i; float y = Mathf.Sqrt(Mathf.Pow(radius, 2) - Mathf.Pow(z, 2)); v.Add(new Vector3(c, y, z)); } for (float i = radius; i > -radius; i -= time) { float z = i; float y = Mathf.Sqrt(Mathf.Pow(radius, 2) - Mathf.Pow(z, 2)); v.Add(new Vector3(c, -y, z)); } } int icr = v.Count / spineCount; for (int c = 0; c < spineCount-2; c++) { for (int i = 0; i < icr; i++) { t.Add(i + c * icr); t.Add(i + 1 + c * icr); t.Add(i + (1 + c) * icr); } for (int i = 0; i < icr; i++) { t.Add(i + 1 + (1 + c) * icr); t.Add(i + (1 + c) * icr); t.Add(i + 1 + c * icr); } } Debug.Log(v.Count + " "+t.Count); mesh.SetVertices(v);mesh.SetTriangles(t,0);
Код конечно чудной,но рисует то что задумано. Нужно наложить теперь скелет на эту трубку. Проблема в том что у меня он искажается,кости в неправильных координатах.Как правильно конвертировать координаты в матрицу?
Добавлено (14 Февраля 2018, 15:14) --------------------------------------------- Кто-нить поможет,пожалуйста.Уже который день бьюсь бошкой об стол.Я не пойму как работают boneIndex и weight у костей. Ну первое это индекс кости - это очевидно),второе это коефициент влияния кости на вершину,но вот проблемка.У меня есть n позвонков на каждом 5 костей. Есть меш цилиндра на который наложен этот вот скелет.Проблема заключается в том что я не могу указать какие кости должны давать влияние на вершину. Но не получается сделать задуманое.Вершины тупо сливаются в 1 точку при отдалении.
И ещё вопрос.Есть игровых обьекта(цилинтра).как сделать чтобы угол между ними не превышал 30 градусов?
Сообщение отредактировал defGMDefeloper - Среда, 14 Февраля 2018, 16:15