added clothes not perfect but...

This commit is contained in:
2024-11-25 23:19:57 +02:00
parent 54bfdd320e
commit a09e448c94
72 changed files with 10729 additions and 84 deletions
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: fc60db8531ded764dbec55ad777f3ea6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 30084523c6bcd28438c1d56e4963cbb2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,87 @@
using System.Linq;
using UnityEditor;
using UnityEngine;
public class BlinkSkinnedMeshTransfer : EditorWindow
{
private ScriptableObject scriptableObj;
private SerializedObject serialObj;
public SkinnedMeshRenderer[] skinnedMeshRenderersList;
public Transform newArmature;
public Transform newParent;
private Vector2 viewScrollPosition;
[MenuItem("BLINK/Skinned Mesh Transfer")]
private static void OpenWindow()
{
var window = (BlinkSkinnedMeshTransfer) GetWindow(typeof(BlinkSkinnedMeshTransfer), false, "Skinned Mesh Transfer");
window.minSize = new Vector2(400, 500);
GUI.contentColor = Color.white;
window.Show();
}
private void OnEnable()
{
scriptableObj = this;
serialObj = new SerializedObject(scriptableObj);
}
private void OnGUI()
{
DrawMain();
}
private void DrawMain()
{
viewScrollPosition = EditorGUILayout.BeginScrollView(viewScrollPosition, false, false);
var serialProp = serialObj.FindProperty("skinnedMeshRenderersList");
EditorGUILayout.PropertyField(serialProp, true);
GUILayout.Space(7);
newArmature = (Transform) EditorGUILayout.ObjectField("New Armature (Hips)", newArmature, typeof(Transform), true);
GUILayout.Space(7);
newParent = (Transform) EditorGUILayout.ObjectField("New Parent", newParent, typeof(Transform), true);
GUILayout.Space(15);
if (GUILayout.Button("TRANSFER", GUILayout.MinWidth(150), GUILayout.MinHeight(30), GUILayout.ExpandWidth(true)))
{
TransferSkinnedMeshes();
}
serialObj.ApplyModifiedProperties();
GUILayout.Space(20);
GUILayout.EndScrollView();
}
private void TransferSkinnedMeshes()
{
foreach (var t in skinnedMeshRenderersList)
{
string cachedRootBoneName = t.rootBone.name;
var newBones = new Transform[t.bones.Length];
for (var x = 0; x < t.bones.Length; x++)
foreach (var newBone in newArmature.GetComponentsInChildren<Transform>())
if (newBone.name == t.bones[x].name)
{
newBones[x] = newBone;
}
Transform matchingRootBone = GetRootBoneByName(newArmature, cachedRootBoneName);
t.rootBone = matchingRootBone != null ? matchingRootBone : newArmature.transform;
t.bones = newBones;
Transform transform;
(transform = t.transform).SetParent(newParent);
transform.localPosition = Vector3.zero;
}
}
static Transform GetRootBoneByName(Transform parentTransform, string name)
{
return parentTransform.GetComponentsInChildren<Transform>().FirstOrDefault(transformChild => transformChild.name == name);
}
}
@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 0a3641abb0e35d54d994c6c6b252e2da
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 219764
packageName: Skinned Mesh Transfer
packageVersion: 1.0
assetPath: Assets/Blink/Tools/SkinnedMeshTransfer/Editor/BlinkSkinnedMeshTransfer.cs
uploadId: 493812
@@ -0,0 +1,4 @@
Hey! Blink is happy to provide you with this utility tool.
Here is the video on how to use it:
https://youtu.be/vu8kd4wrfG4
@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: ca84bee85e63e9c4291778e371921011
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 219764
packageName: Skinned Mesh Transfer
packageVersion: 1.0
assetPath: Assets/Blink/Tools/SkinnedMeshTransfer/README.txt
uploadId: 493812