Unity에서 런타임에 대화식 천에서 메시를 저장하는 방법은 무엇입니까?


10

장면의 시작 부분에 'ball'GameObject 위에 'sheet'라는 GameObject가 있습니다. 시트에는 Interactive Cloth 구성 요소와 Cloth Renderer가 있습니다. Interactive Cloth 구성 요소의 메쉬는 정점이 많은 평면입니다. 런타임에 시트가 공 위로 떨어지고 원하는 모양을 만듭니다. 이 시점에서 Interactive Cloth 구성 요소를 비활성화하면 시트 메쉬가 원하는대로 그대로 유지되지만 조립식으로 당길 수 없습니다.

누구든지 그 모양의 사본을 얻는 방법을 알고 있습니까?

예를 들어 런타임에 Interactive Cloth에서 메시를 읽은 다음이를 사용하여 Interactive Cloth 컴포넌트없이 메시를 원하는 방식으로 다시 변경합니다.

도움을 주시면 감사하겠습니다.


또는 블렌더와 같은 방식으로 클로 쓰 시뮬레이션을 수행하고 메시를 저장 한 다음 유니티로 가져올 수 있습니다. 온라인으로하는 방법에 대한 많은 자습서가 있습니다.
Peethor

답변:


0

간단한 행동과 사용자 정의 관리자가 도움이 될 것입니다. 이것을 스크립트에 추가하십시오 :

using UnityEngine;
using UnityEditor;
using System.Collections;

public class SaveMeshBehaviour : MonoBehaviour
{
    public Mesh GetMesh()
    {
        return gameObject.GetComponent<MeshFilter>().sharedMesh;
    }
}

[CustomEditor(typeof(SaveMeshBehaviour))]
public class SaveMeshInspector : Editor
{
    public override void OnInspectorGUI()
    {
        GUILayout.BeginHorizontal();
        if (GUILayout.Button("Save"))
        {
            var saveB = target as SaveMeshBehaviour;
            if (saveB != null)
            {
                var mesh = saveB.GetMesh();

                var copy = Mesh.Instantiate(mesh);
                AssetDatabase.CreateAsset(copy, "Assets/NewMesh.asset");
                AssetDatabase.SaveAssets();
            }
        }
        GUILayout.EndHorizontal();
    }
}

그런 다음 장면에서 SaveMeshBehaviour를 천에 추가하십시오. 사용자 정의 inspctor는 새 구성 요소에 저장 버튼이 있습니다. 장면을 재생할 때 저장 버튼을 클릭하면 평면의 복사 본인 메쉬가 저장됩니다.

도움이 되었기를 바랍니다!


2
고맙지 만 MeshFilter가 연결되어 있지 않으므로 예제에서는 작동하지 않습니다. Interactive Cloth 컴포넌트는 Mesh를 보유하고 있기 때문입니다. 스크립트를 수정하려고했지만 "<InteractiveCloth> (). vertices"및 "<InteractiveCloth> (). mesh"에만 액세스 할 수 있습니다. 스크립트를 사용하여 메쉬에 액세스 할 때 원래 메쉬를 출력하는 것처럼 메쉬가 유지되는 메쉬는 변경되지 않는다고 생각합니다. 정점이 수정되고 있다고 생각하지만 새 메쉬를 만드는 데 사용하는 방법을 모르겠습니다.
RebDev

정점과 메쉬의 배열을 얻을 수 있다면. 메쉬를 복사 한 다음 copy.vertices = cloth.vertices 위와 같이 복사본에서 자산을 생성하여 따르십시오. 잘 작동하지만 확실하지 않을 수 있습니다.
PatrickSharbaugh

불행히도 "Mesh.vertices가 너무 작습니다. 제공된 정점 배열에 삼각형 배열이 참조하는 것보다 정점이 적습니다"라는 오류가 발생합니다.
RebDev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.