#if UNITY_EDITOR
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;
using UnityEditor;
using UnityEngine; public class AnimImport : AssetPostprocessor
{
StringBuilder sb = new StringBuilder(); //fbx动画导入前的处理,对动画集进行分段设置,划分为各个子集
void OnPreprocessAnimation()
{
var fpath = Path.GetDirectoryName(assetImporter.assetPath) + "/times.txt";
if (!File.Exists(fpath))
{
//EditorUtility.DisplayDialog("缺少时间配置文件", assetImporter.assetPath + "的动画分段文件time.txt不存在,动画子集无法划分", "ok");
return;
} var sr = new StreamReader(File.OpenRead(fpath), Encoding.ASCII);
var longStr = sr.ReadToEnd();
var dats = longStr.Split('\"');
var anims = new List<ModelImporterClipAnimation>(); for (var i = ; i < dats.Length; ++i)
{
if (dats[i] == "" || dats[i] == "\r\n")
continue;
var anim = new ModelImporterClipAnimation();
var subdat = dats[i].Split(' ');
anim.name = subdat[];
anim.firstFrame = float.Parse(subdat[].TrimEnd('f'));
anim.lastFrame = float.Parse(subdat[].TrimEnd('f'));
anims.Add(anim);
} var modelImporter = assetImporter as ModelImporter;
modelImporter.clipAnimations = anims.ToArray(); } void OnPreprocessModel()
{
var modelImporter = assetImporter as ModelImporter;
modelImporter.globalScale = 0.6f;
modelImporter.importMaterials = true;
modelImporter.materialName = ModelImporterMaterialName.BasedOnTextureName;
} void OnPostprocessModel(GameObject go)
{
var modelImporter = assetImporter as ModelImporter; //1,找到Materials文件夹下所有的材质文件,替换它的shader
var dir = Path.GetDirectoryName(modelImporter.assetPath) + "/Materials";
var files = Directory.GetFiles(dir, "*.mat");
foreach (var fs in files)
{
var mat = AssetDatabase.LoadAssetAtPath(fs.Replace('\\', '/'), typeof(Material)) as Material;
mat.shader = Shader.Find("Qx/Unity/Mobile/Mobile-Diffuse");
} AssetDatabase.SaveAssets(); //2,创建prefab到assets/res/prefabs/char/下
//经试验,查找文档,发现在此方法(OnPostprocessModel)中创建prefab是不可能的,其它方法更不可能
//方式一,这种方式加载出来的fbx是空的
//var fbx = AssetDatabase.LoadAssetAtPath(assetImporter.assetPath, typeof(GameObject)) as GameObject;
//方式二,这种方式虽然能成功创建预置体,但创建出的预置体上mesh引用为空(原因见U3D文档)
//var fbx = go;
//PrefabUtility.CreatePrefab(Path.GetDirectoryName(modelImporter.assetPath) + "/testfbx.prefab", go); } }
#endif

不可能的工作:在FBX模型导入脚本中生成模型的预置体的更多相关文章

  1. 如何将MagicaVoxel模型导入UE4中(2)

    前言 当可以把MagicaVoxel的静态模型导入到UE4后,我又开始不满足了.默认第三人称蓝图的"汽车碰撞人偶(雾)"与场景中的体素画风格格不入,于是,我便想着用自己建造的体素画 ...

  2. 如何将MagicaVoxel模型导入UE4中(1)

    前言 当初在选择自己项目的美术风格时,由于自己的美术基础实在是太差,所以选择了体素风格来构建(其实还是MagicaVoxel的建模操作很容易上手),但是将自己千辛万苦做好的模型导入至项目中时,出现了这 ...

  3. 3dmax做的模型导入U3d后 当模型靠近摄像机时镂空问题

    使用3dMax  Reset XForm下就好了. 原因可能是 法线方向问题?

  4. Blender模型导入进Unity,旋转缩放的调整

    Blender跟Unity的XYZ轴不同的原因,导致Blender模型导入Unity之后会发生模型朝向不对. 请先看看下边这个情况: 首先,Blender物体模式下,对模型进行 旋转 缩放,将会在右边 ...

  5. 深度|OpenAI 首批研究成果聚焦无监督学习,生成模型如何高效的理解世界(附论文)

    本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载,原文. 选自 Open AI 作者:ANDREJ KARPATHY, PIETER ABBEEL, GREG BRO ...

  6. 生成模型(Generative Model)与判别模型(Discriminative Model)

    摘要: 1.定义 2.常见算法 3.特性 4.优缺点 内容: 1.定义 1.1 生成模型: 在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下.它给观测值和标 ...

  7. 生成模型(Generative)和判别模型(Discriminative)

    生成模型(Generative)和判别模型(Discriminative) 引言    最近看文章<A survey of appearance models in visual object ...

  8. 生成模型(Generative Model)和 判别模型(Discriminative Model)

    引入 监督学习的任务就是学习一个模型(或者得到一个目标函数),应用这一模型,对给定的输入预测相应的输出.这一模型的一般形式为一个决策函数Y=f(X),或者条件概率分布P(Y|X). 监督学习方法又可以 ...

  9. 生成模型(Generative Model)Vs 判别模型(Discriminative Model)

      概率图分为有向图(bayesian network)与无向图(markov random filed).在概率图上可以建立生成模型或判别模型.有向图多为生成模型,无向图多为判别模型. 判别模型(D ...

随机推荐

  1. HDU - 5324:Boring Class (CDQ分治&树状数组&最小字典序)

    题意:给定N个组合,每个组合有a和b,现在求最长序列,满足a不升,b不降. 思路:三位偏序,CDQ分治.   但是没想到怎么输出最小字典序,我好菜啊. 最小字典序: 我们倒序CDQ分治,ans[i]表 ...

  2. 复选框checkbox样式修改

    该方法只兼容IE9及以上 将checkbox和label关联起来, 将checkbox隐藏掉,通过点击label来点击checkbox,label的样式即可自定义. 通过checkbox:checke ...

  3. SpringMvc和servlet简单对比介绍

    原文链接:http://www.cnblogs.com/haolnu/p/7294533.html 一.servlet实现登录. 咱们先来看一下servlet实现注册登录. <servlet&g ...

  4. SpringBoot 项目修改html后不需要重新启动(热部署)

    基于IDEA配置: 一.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <arti ...

  5. 《DSP using MATLAB》示例Example6.18、6.19

  6. svn问题解答

    一.svn在提交文件是报错:previous operation has not finished;run 'cleanup' if it was interrupted 原因,工作队列被占用,只需在 ...

  7. 【转】Ubuntu中Vmware Tools的安装与卸载

    原文网址:http://blog.csdn.net/huanghe423/article/details/7005611 Vmware Tools是VMware提供的一套非常人性化的程序,可以用来解决 ...

  8. 解决openoffice进程异常退出的办法:

    实现以守护进程,定时检测openoffice是否退出,如果进程不存在,通过脚本将openoffice起起来即可.   具体操作步骤: 第一步: 将openoffice.sh脚本放置在root目录下面, ...

  9. 简单安装MySQL(RPM方式)

    本次测试使用一台ip为192.168.2.21的虚拟机 下边的步骤虽然多,但是跟着命令或者复制粘贴命令即可完成操作,并无难点 1.安装准备 MySQL-server-5.6.35-1.linux_gl ...

  10. kotlin与fastjson的异常

    出现这个原因是因为kotlin的非空特性. 如果一个类中声明了一个字段(kotlin的特性,该字段默认是非空的), 使用fastjson进行转化的时候,如果json数据中没有该字段的数据,则会出现转换 ...