不可能的工作:在FBX模型导入脚本中生成模型的预置体
#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模型导入脚本中生成模型的预置体的更多相关文章
- 如何将MagicaVoxel模型导入UE4中(2)
前言 当可以把MagicaVoxel的静态模型导入到UE4后,我又开始不满足了.默认第三人称蓝图的"汽车碰撞人偶(雾)"与场景中的体素画风格格不入,于是,我便想着用自己建造的体素画 ...
- 如何将MagicaVoxel模型导入UE4中(1)
前言 当初在选择自己项目的美术风格时,由于自己的美术基础实在是太差,所以选择了体素风格来构建(其实还是MagicaVoxel的建模操作很容易上手),但是将自己千辛万苦做好的模型导入至项目中时,出现了这 ...
- 3dmax做的模型导入U3d后 当模型靠近摄像机时镂空问题
使用3dMax Reset XForm下就好了. 原因可能是 法线方向问题?
- Blender模型导入进Unity,旋转缩放的调整
Blender跟Unity的XYZ轴不同的原因,导致Blender模型导入Unity之后会发生模型朝向不对. 请先看看下边这个情况: 首先,Blender物体模式下,对模型进行 旋转 缩放,将会在右边 ...
- 深度|OpenAI 首批研究成果聚焦无监督学习,生成模型如何高效的理解世界(附论文)
本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载,原文. 选自 Open AI 作者:ANDREJ KARPATHY, PIETER ABBEEL, GREG BRO ...
- 生成模型(Generative Model)与判别模型(Discriminative Model)
摘要: 1.定义 2.常见算法 3.特性 4.优缺点 内容: 1.定义 1.1 生成模型: 在概率统计理论中, 生成模型是指能够随机生成观测数据的模型,尤其是在给定某些隐含参数的条件下.它给观测值和标 ...
- 生成模型(Generative)和判别模型(Discriminative)
生成模型(Generative)和判别模型(Discriminative) 引言 最近看文章<A survey of appearance models in visual object ...
- 生成模型(Generative Model)和 判别模型(Discriminative Model)
引入 监督学习的任务就是学习一个模型(或者得到一个目标函数),应用这一模型,对给定的输入预测相应的输出.这一模型的一般形式为一个决策函数Y=f(X),或者条件概率分布P(Y|X). 监督学习方法又可以 ...
- 生成模型(Generative Model)Vs 判别模型(Discriminative Model)
概率图分为有向图(bayesian network)与无向图(markov random filed).在概率图上可以建立生成模型或判别模型.有向图多为生成模型,无向图多为判别模型. 判别模型(D ...
随机推荐
- WPF 同一窗口内的多线程 UI(VisualTarget)
WPF 的 UI 逻辑只在同一个线程中,这是学习 WPF 开发中大家几乎都会学习到的经验.如果希望做不同线程的 UI,大家也会想到使用另一个窗口来实现,让每个窗口拥有自己的 UI 线程.然而,就不能让 ...
- BW模型数据删除
删除数据一般可以按请求(Request)来删除,需要从顶层模型往下删:也可以完成删除,在模型中就没有删除的顺序.本例中采用完全删除,但是按照从顶层模型往下的顺序删除数据. 1.删除信息立方体数据 ...
- java-文件流正确关闭资源
用文件流来拷贝一个文件,用到文件字节输入流(FileInputStream)和文件字节输出流(FileOutputStream),用输入流把字节文件读到缓冲数组中,然后将缓冲数组中的字节写到文件中,就 ...
- MySQL5.6版本性能调优my.cnf详解
[client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock basedir ...
- angular指令,异步调用数据,监控数据的变化(自定义一个表头的指令)
angular框架中提供了很多有效的指令,指令的目的就是为了提高代码的复用率,提高工作效率. 下面我们自己来定义一个指令: 一点建议:写指令名字的时候,尽量不要用用大写,下划线等,否则会有很大的坑等着 ...
- PAT1034. Head of a Gang ——离散化+并查集
题意:成员A与成员B通话 ,成员B与成员C通话,则 ABC即为一个团伙,一共有若干个团伙,每个团伙的人数大于2且相互通话时间超过一定值即为黑帮,每个黑帮伙里有一个BOSS,boss是与各个成员打电话最 ...
- Js、jquery学习笔记
end() 方法 重新定位到上次操作的元素,一般与siblings()一起使用,操作其兄弟元素.如:$(this).addClass("highlight").children(& ...
- JAVASE02-Unit011: TCP通信(小程序)
TCP通信(小程序) server端: package chat; import java.io.BufferedReader; import java.io.IOException; import ...
- 关于最大传输单元(MTU)的整理
MTU设置不当,可能会导致许多网络问题,如某些网络应用无法使用,某些网站无法访问等.下面是在网上搜索整理的关于MTU设置的东西,某些可能未作验证,仅供参考. 1. 如何确定网络MTU 某些ISP接入的 ...
- 【HDU】1520 Anniversary party(树形dp)
题目 题目 分析 带权值的树上最大独立集 代码 #include <bits/stdc++.h> using namespace std; ; int a[maxn], n, fa[max ...