soft-body в unity3d

Физика в Unity

soft-body в unity3d

Сообщение antoon 19 июл 2015, 18:11

я один раз искал нормальную физику повреждений и нашел форум юнити http://forum.unity3d.com/threads/wip-tr ... in.225723/ и там был показан проект с машиной у которой весь корпус софт-боди. кто знает как просто сделать этот софт-боди или у кого есть что-то типо этого ? :-?
antoon
UNец
 
Сообщения: 18
Зарегистрирован: 19 мар 2014, 17:10

Re: soft-body в unity3d

Сообщение BladeBloodShot 03 фев 2016, 23:48

У меня тоже вопрос: а можно ли вообще в unity c помощью joint создать полноценный soft body (чтобы не проходил сквозь rigid body), и не используя сторонних библиотек(dll). Только не надо говорит про отстойный cloth, который реагирует не на все rigid body.
BladeBloodShot
UNец
 
Сообщения: 38
Зарегистрирован: 03 фев 2016, 22:31

Re: soft-body в unity3d

Сообщение PREZRAK 04 фев 2016, 19:55

Теоретически - возможно, я думаю. Но никто, видать, либо не занимается этим, либо не афиширеут свои успехи.
Попробуйте.
Это было про стандартные средства. Есть продукты на сторе - поищите.
участник клуба GCC
Аватара пользователя
PREZRAK
Старожил
 
Сообщения: 653
Зарегистрирован: 30 май 2013, 12:41
  • Сайт

Re: soft-body в unity3d

Сообщение BladeBloodShot 25 фев 2016, 21:46

Вот реализация получения деформации для soft body отсюда можно отталкиваться
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class SoftBodyTest : MonoBehaviour {
    List<GameObject> CubeObject = new List<GameObject>(); // массив частиц
    List<Vector3> startPos = new List<Vector3>(); // начальные позиции частиц
    int CountObj = 10; // количество частиц
    float stifСoef = 1; // коэфициент жесткости
    void Start()
    {
        for (int a = 0; a < CountObj; a++)
        {
            GameObject TGO = GameObject.CreatePrimitive(PrimitiveType.Cube);
            TGO.transform.parent = transform;
            TGO.transform.localPosition = new Vector3(a * 3,0,0);
            TGO.AddComponent<Rigidbody>().useGravity = false;
            TGO.GetComponent<Rigidbody>().freezeRotation = true;
            CubeObject.Add(TGO);
            startPos.Add(TGO.transform.localPosition);
        }
    }
    void FixedUpdate()
    {
        for (int a = 0; a < CountObj - 1; a++)
        {
            Vector3 leiht = startPos[a + 1] - startPos[a];
            Vector3 newLeigt = CubeObject[a + 1].transform.localPosition - CubeObject[a].transform.localPosition - leiht;
            Vector3 newLeigtA = new Vector3(Mathf.Abs(newLeigt.x), Mathf.Abs(newLeigt.y), Mathf.Abs(newLeigt.z));
            Vector3 delenie = Vector3.zero;
            if (newLeigtA.magnitude > 0)
            {
                delenie = newLeigt / newLeigt.magnitude;
            }
            Vector3 minus = newLeigtA;
            Vector3 deformationF = new Vector3(delenie.x * minus.x, delenie.y * minus.y, delenie.z * minus.z) * stifСoef;// деформация * коэфициент жесткости
            Vector3 deformationS = deformationF * -1;
            if (a != 0)
            {
                CubeObject[a].transform.localPosition += deformationF / 2;
            }
            if (a + 1 != CountObj - 1)
            {
                CubeObject[a + 1].transform.localPosition += deformationS / 2;
            }
            else
            {
                CubeObject[a + 1].transform.localPosition += deformationS;
            }
        }
    }
}

эта деформация взята из системы масса-пружина, из этого можно сделать вмятины на машине,
так вот возникли вопросы: как гасить силу, я конечно могу сам расписать все коряво, но может есть метод более изящный. Еще один вопрос: слышал о механике сплошных тел, так вот на сколько затратно это в реал тайме или все же стоит лучше расшаривать систему масса-пружина.
BladeBloodShot
UNец
 
Сообщения: 38
Зарегистрирован: 03 фев 2016, 22:31

Re: soft-body в unity3d

Сообщение PREZRAK 02 апр 2016, 07:51

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

Просто поднимаю эту удивительную тему.
участник клуба GCC
Аватара пользователя
PREZRAK
Старожил
 
Сообщения: 653
Зарегистрирован: 30 май 2013, 12:41
  • Сайт


Вернуться в PhysX

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2