首页 > 其他分享 >3D换装

3D换装

时间:2023-02-02 09:24:46浏览次数:37  
标签:换装 int List Add new bodys public 3D

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CombinePlayer : MonoBehaviour
{
public List<GameObject> bodys=new List<GameObject>();
List<SkinnedMeshRenderer> skinneds = new List<SkinnedMeshRenderer>();
public int touid = 0;
public int tuiid = 0;
public int yifuid = 0;
// Start is called before the first frame update
void Start()
{
Change();
}
public void Change()
{
bodys.Add(Resources.Load<GameObject>("tou_" + touid));
bodys.Add(Resources.Load<GameObject>("tui_" + tuiid));
bodys.Add(Resources.Load<GameObject>("yifu_" + yifuid));

Transform[] allbones = GetComponentsInChildren<Transform>();
Dictionary<string, Transform> dicbones = new Dictionary<string, Transform>();
for (int i = 0; i < allbones.Length; i++)
{
dicbones.Add(allbones[i].name, allbones[i]);
}
List<Transform> bones = new List<Transform>();
List<CombineInstance> combines = new List<CombineInstance>();
List<Material> materials = new List<Material>();
for (int i = 0; i < bodys.Count; i++)
{
CombineInstance combine = new CombineInstance();
combine.mesh = bodys[i].GetComponentInChildren<SkinnedMeshRenderer>().sharedMesh;
//combine.transform = bodys[i].transform.localToWorldMatrix;//矩阵赋值
combines.Add(combine);
materials.Add(bodys[i].GetComponentInChildren<SkinnedMeshRenderer>().sharedMaterial);
Transform[] bodybones = bodys[i].GetComponentInChildren<SkinnedMeshRenderer>().bones;
for (int j = 0; j < bodybones.Length; j++)
{
//if (dicbones.ContainsKey(bodybones[i].name))
//{
bones.Add(dicbones[bodybones[j].name]);
//}
}
}
Mesh mesh = new Mesh();
mesh.CombineMeshes(combines.ToArray(), false, false);
GetComponent<SkinnedMeshRenderer>().sharedMesh = mesh;
GetComponent<SkinnedMeshRenderer>().materials = materials.ToArray();
GetComponent<SkinnedMeshRenderer>().bones = bones.ToArray();
}
}

 

标签:换装,int,List,Add,new,bodys,public,3D
From: https://www.cnblogs.com/Chenchen11111/p/17084809.html

相关文章

  • 3D模型 | 回旋火箭弹乐园教程之火箭 有手就会的火箭弹教程,超详细>>
    回旋火箭弹乐园之制作教程  第一章在接下来的两天里,我们将手把手教会大家在画图3D中搭建火箭弹乐园,堪称“有手就行(还要有电脑)”,今天便是制作教程第一章——火箭(弹)的建模......
  • 小人换装
    //第一步是合并每个部件的网格//第二步是合并材质球//第三部是设置对应的骨头//本脚本需挂载在对应avtar对象上,不然找不见对应骨头,无法实现效果usingSystem.Collectio......
  • 通过脚本将unity3D模型转出图片
    usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEditor;usingUnityEngine;publicclassChangeToTexture:MonoBehaviour{//这里是要导出模型......
  • 单反DCP文件制作教程 电影色调3Dlut快速实现
    单反DCP文件制作教程dcptool下载地址:​​https://sourceforge.net/projects/dcptool/​​1、解压2、快捷键​​win+r​​启动命令行3、​​cd/dE:\TDDownload\dcpTool......
  • 3D建模零代码平台
    近几年,随着国内外文化产业的迅猛发展,3D建模行业迎来黄金发展期。尤其是在元宇宙时代及数字体验经济时代的大背景下,越来越多的实时、可交互的3D内容将出现在人们的生活中。......
  • 003dig命令详解
    一、dns解析追踪背景:腾讯云从免费版本转到企业版本后,没有更改DNS服务器指向集群,但实际去看其实已经NS到最新了,如下所示❯dig+tracetaicharge.com;<<>>DiG9......
  • 点击获取Cesium中加载的3DTile模型的属性信息
    1.添加鼠标点击事件//鼠标单击左键事件viewer.screenSpaceEventHandler.setInputAction(functiononMouseClick(click){//自己需要写逻辑的地方......
  • 12_3D数据
    importmatplotlib.pyplotaspltimportnumpyasnpfrommpl_toolkits.mplot3dimportAxes3Dfig=plt.figure()ax=Axes3D(fig)X=np.arange(-4,4,0.25)Y=np......
  • 纯css3D按钮多种悬停特效
    效果如下代码演示地址CSS代码如下 body{background:#e0e5ec;}h1{position:relative;text-align:center;color:#353535;font-size:50px;font-family:......
  • ArcGIS Pro导入3d Max模型文件
    ArcGISPro支持传统三维模型(如3dMax)、BIM、OSGB等格式的导入。测试数据下载地址:https://www.pland.gov.hk/pland_sc/info_serv/3D_models/download.htm基本流程如下:(1)......