u3d怎么u3d 导入模型uv2

Unity 5导入Blender资源完整指南
Blender是一款免费且开源的3D建模软件,它在游戏开发中的应用也越来越广泛。将游戏资源从Blender导入Unity 5中有3种方式。您可以将3D模型以.obj和.fbx格式从Blender导出,然后将它们导入到Unity。或者将整个Blender工程的.blend文件导入到Unity。本教程将分别介绍这三种方式,以及每种方式的优缺点。
在Blender中制作游戏资源
选择网格并重命名。切记要在Object与Data选项卡中均为网格命名。
选中网格后按N键打开右侧面板,顶部会出现Location, Rotation, 和Scale设置。
请确保在Blender中将网格设置为如下:
Location x,y,z = 0
Rotation x,y,z = 0
Scale x,y,z = 1
如果不是以上设置,可以选中网格后按下ALT+G 键重置网格位置。按CTRL+A键并选择Rotation & Scale来重置网格的旋转和缩放。
将资源从Blender中导出
选中网格后,依次点击File & Export & Wavefront (.obj)导出为.obj格式,或选择FBX(.fbx)导出为.fbx格式:
选择导出路径,并将其命名为与网格在Object和Data选项卡中相同的名字(以保持一致)。
现在,在左侧面板(默认设置)中更改一些Export OBJ /Export FBX设置:
启用Selection Only/Selected Objects选项可以仅导出选中的单个或者多个网格,如果禁用此选项,则Blender文件中所有网格都会被导出为.obj或.fbx文件。
导出为.obj格式时禁用Write Materials选项,Unity不支持编辑.mtl文件,所以不需要启用该选项。禁用Objects as OBJ Objects并启用Objects as OBJ Groups,以便Unity保留网格命名,而非使用“default”。启用 Keep Vertex Order。
导出为.fbx格式时启用!EXPERIMENTAL! Apply Transform选项以避免物体发生异常的旋转。注意,Blender对!EXPERIMENTAL! Apply Transform选项的描述为:“警告!实验性选项,已知风险包括中断armatures/animations。”用不包含Armatures 和Animations 的网格测试该选项,没有任何问题。
所有导出设置如下图所示:
如果要保存为.blend工程文件,则直接删掉Blender项目中所有多余的资源,仅保留材质资源及其绑定的纹理,然后保存工程即可。
将资源文件导入到Unity 5
将资源导入到Unity有以下几种方法:
1. 可以简单地拖拽.obj/.fbx文件到Unity编辑器Project视图的任意文件夹下。
2. 也可以在Project视图中单击鼠标右键,在弹出菜单中选择Import New Asset…选择.obj/.fbx文件并点击Import。
3. 或者直接点击菜单项Assets & Import New Assets… 导入资源。
资源导入Unity后,会出现一个.obj/.fbx文件和一个Materials文件夹。如果直接导入.blend工程文件,Unity会自动将其转换为.fbx文件:
Materials文件夹中包含导入的网格所使用的材质。无论此网格在Blender中是否使用了材质,在.obj文件导入Unity后,它都会自动创建一个名为“网格名字+Mat”的材质。
而不同于.obj文件,.fbx文件的网格可以使用多个材质,.fbx使用了与Blender中相同的材质名称和颜色数据。如果材质在Blender中使用了纹理,导入资源的材质也会使用相同的纹理!.blend工程文件与.fbx文件导入过程一致。
如果Blender中的资源使用了纹理,在导入.fbx文件时,只有先导入纹理,在导入资源到Unity后,纹理才可以自动应用到网格的材质上!
选中刚才导入的网格,可以在检视视图(Inspector)中查看此网格的设置,也可以直接保留所有默认设置。
如果需要为网格烘焙光照贴图,而该网格又没有比较好的UV(重叠的UV就不太好)可用于烘焙光照贴图时,可以启用Generate Lightmap UVs来生成光照贴图UV。如果存在UV2通道,Unity将使用UV2作为光照贴图的纹理坐标。否则将使用主UV。Unity可以展开网格来自动生成光照贴图UV。只需启用Generate Lightmap UVs 选项即可。本例使用的立方体网格,带有为光照贴图烘焙准备的UV2,所以不需要启用Generate Lightmap UVs。
现在将资源拖拽到层级视图(添加到场景)中。
可以看到.obj资源是一个带有Transform组件的父游戏对象。
并且这个父游戏对象有一个子游戏对象,即网格本身,它带有Transform、Mesh、Mesh Renderer和Material组件 。
.fbx与.blend资源则没有关联网格的子对象。
如果想要对导入资源进行缩放、移动或旋转,.obj资源可以选择父对象并更改其Transform设置(或者使用变换工具)。而.fbx与.blend资源直接操作其自身的Transform设置即可。
注意,.blend资源Transform组件中Rotation的X值默认为-90。因为.blend转换为.fbx的操作是Unity在后台完成的,所以它与在Blender中使用默认导出设置导出的.fbx文件相同。可以为.blend资源添加一个父对象,然后操作父对象的Transform来解决旋转问题。
强烈建议保留Mesh本身(.obj文件是子对象)的默认Transform设置!这对于在Unity中使用脚本或动画来动态改变网格的缩放、位置和旋转非常有用。
为导入的网格资源应用纹理
选择子对象并打开该对象上的材质设置。可以在此改变资源材质的设置,如更改颜色、添加纹理贴图等。
也可以在项目视图(Project)中通过点击资源上的材质,来定位到材质设置。
如果想为资源添加纹理,在项目视图中选择纹理,并将纹理拖拽到材质的纹理栏位即可。比如将Albedo颜色纹理拖拽到Albedo栏位:
也可以通过点击Albedo栏位旁边的小圆圈来选择纹理贴图并添加纹理:
各类文件格式的优缺点
请点击查看大图:
如果想导出绑定了材质但不含动画的3D模型,可以选择.obj格式,它既比.fbx占用空间小,又附带父子游戏对象。但关联了材质和纹理时,最快最好的方法就是导出为.fbx文件(取决于实际项目工作流)。
如果想导出带有多个材质或者带有动画的模型,请使用.fbx文件!
如果想快速修改并测试Mesh,请使用.blend文件。不要在最终产品或游戏上使用.blend文件!
更多Unity相关技术文章
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
今日搜狐热点解决unity导入模型时出现多层UV的情况
最近在做项目优化的时候发现,游戏中的模型占用了很高的内存,然后就怀疑是美术在做模型的时候没有把uv2,uv3,color等无用的通道去掉,然后就去问了美术,美术说她并没有开启这些通道,我也去max中检查了一下也没发现什么异常的情况,在max中看确实只有一层uv但是在unity里面就可以看见模型上面有很多层uv了,带着这个问题去查了下资料,摸索着使用了下max,找到了如下的两种解决方法。
在max中进行设置把没有必要的通道全部clear掉,具体的操作请看下面的截图:
在这个界面中美术可以把相应的不需要的通道关掉,这样在导出的时候就不会附带这些通道了,如果想去掉color通道的话直接去掉alpha通道就行。
程序这边进行处理,做一个工具,对每个导入到unity中的模型代码中清除相应的通道,具体的代码如下public class ClearModelUV:AssetPostprocessor
//AssetPostprocessor这个类是unity自带的,会在导入资源的时候自动调用,
//可以在这个类中实现对资源的处理。
//OnPostprocessModel这个函数在资源导入到unity被存成prefabs最后阶段被调用
//传入的gameobject就是被导入的资源的Gameobject
//这个类还有一个OnPreprocessModel的方法会比这个方法提前点调用。具体用法
//和前者差不多
void OnPostprocessModel(GameObject rImaportModel)
this.ClearMeshUVAndColorChannel(rImaportModel);
private void ClearMeshUVAndColorChannel(GameObject rImportModel)
List&Vector2& rNewUV =
List&Color32& rNewColor =
var rFilters= rImportModel.GetComponentsInChildren&MeshFilter&();
for (int filter_index = 0; filter_index & rFilters.L filter_index++)
rFilters[filter_index].sharedMesh.SetColors(rNewColor);
rFilters[filter_index].sharedMesh.SetUVs(1, rNewUV);
rFilters[filter_index].sharedMesh.SetUVs(2, rNewUV);
rFilters[filter_index].sharedMesh.SetUVs(3, rNewUV);
以上就是解决导入的模型存在多层UV的解决方法。
Tip:由于unity的光照贴图会自动占用uv2通道,而且你的项目中又使用的是动态加载光照贴图的方式的话,最好不要在导入模型的时候把UV2设置为null,如果你这样做了有可能会导致光照贴图显示不出来的问题。具体请看http://m.blog.csdn.net/article/details?id=我也是搜索解决方案的时候无意中看到的,所以作为Tips提醒下
没有更多推荐了,如何把u3d的模型和uv导出obj到3dmax?
&& & & & & & & & & 在3d里做好了模型导入u3d展uv2,烘培好后,需要把做好的模型和uv2信息再次放入3d中用插件导出到平台里展示效果, & &怎么才能把模型从u3d导出,应该导出obj还是什么格式,才可以保留uv信息?
要评论请先&或者&
大神们,谁知道求解啊?
:http://www.ceeger.com/forum/read.php?tid=24100&fid=39 这个怎么用啊,拉进去u3d后有个导入,怎么导出模型obj?UV2 Lightmap Atlas Creation Outside of Unity? - Unity Answers
Navigation
Unity account
You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio.
UV2 Lightmap Atlas Creation Outside of Unity?
I know how to make a second uv channel, what is spinning my brain is how to set up UV2 to work with the lightmap atlas in Unity, where there are 1-?? 1024 images applied to the entire scene. How do you lay out the UVs evenly like that outside of Unity?
All you have to do is to create UV2 for each object separately and Unity will do the packing into maps during Lightmap baking process, i.e. each object has to be fit into [(0,0)(1,1)] square (if you have more than one mesh in the file then you have to unwrap them separately) and Unity will simply set offset and scale for each of them during baking.
You want to use one lightmap for multiple objects then u will have to merge them as one single mesh and unwrap it. or else there is commercial plugin for 3D Max called
it bakes the lightmap inside 3d max and you can use it inside unity with legacy lightmapped shader group. Check their intro videos you ll get a rough idea how the pipeline works.
Hint: You can notify a user about this post by typing @username
Attachments: Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.
6 People are following this question.关于cg方面
unity中多套uv set理解和应用
unity中多套uv有很大用处,比如自带的物体box,sphere就自带两套uv
第一套是正常的,比如方块可以每个面是同一个uv,
但是第二套需要烘焙光照信息,所以默认是全展开,纹理看出来要小些
当然自己的模型也可以加多套uv,max和maya等软件都能加
注意模型在fbx里可以保留多套uv,但是obj里只能保留默认的第一套
另外unity里现在貌似支持最多四套
在maya里如上面设置
现在使用下面两张不同的进行测试
然后使用下面的shader
记得放上测试贴图
Shader "VertexInputSimple" {
Properties{
_MainTex("Texture", 2D) = "white" { }
_Tex_002("Tex_002", 2D) = "" {}
_Tex_003("Tex_003", 2D) = "" {}
_Tex_004("Tex_004", 2D) = "" {}
SubShader{
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
#pragma target 3.0
sampler2D _MainT
sampler2D _Tex_002;
sampler2D _Tex_003;
sampler2D _Tex_004;
//顶点输入结构 可省略 直接写vert里面
/*struct appdata {
//顶点输出结构体 貌似支持N个TEXCOORD
struct v2f {
float4 pos : SV_POSITION;//由顶点着色器输出mesh信息中的纹理坐标,这个坐标是以对象为坐标系的 The position of the vertex after being transformed into projection space
float2 uv : TEXCOORD0;
float2 uv2 : TEXCOORD1;
float2 uv3 : TEXCOORD2;
float2 uv4 : TEXCOORD3;
float2 uv5 : TEXCOORD4;//只是说明可以多个
//顶点函数
float4 vertex : POSITION,//The position of the vertex in local space (model space)
float4 texcoord : TEXCOORD0,//只能有四个
float4 texcoord2 : TEXCOORD1,
float4 texcoord3 : TEXCOORD2,
float4 texcoord4 : TEXCOORD3
o.pos = mul(UNITY_MATRIX_MVP, vertex);
o.uv = texcoord.
o.uv2 = texcoord2.
o.uv3 = texcoord3.
o.uv4 = texcoord4.
//&span style="color:#FF0000;"&在这里替换测试&/span& 如果没有多套uv 后面的值貌似还是会返回最前面有的那套
fixed4 frag(v2f i) : SV_Target
&span style="color:#FF0000;"&
return tex2D(_MainTex, i.uv);
//return tex2D(_MainTex, i.uv2);
//return tex2D(_MainTex, i.uv3);
//return tex2D(_MainTex, i.uv4);&/span&
}可以看出来个不同的效果
当然这个是会影响烘焙光照的
下面是烘焙的结果,可以看到有第二套uv并且没有正常展开的就出错了
可以看出没有第二套的应该是unity在烘焙的时候自己生成了,有点就不会自己生成了
当然也有一些材质会用到四套不同的,比如前面说的speedtree
http://blog.csdn.net/shenmifangke/article/details/
第一套就是纹理
第二套貌似也是光照
后面两个看不懂了,希望有知道的可以分享下
可见多套uv还是有很大作用的
扫码向博主提问
非学,无以致疑;非问,无以广识
擅长领域:
没有更多推荐了,

我要回帖

更多关于 u3d导入fbx 的文章

 

随机推荐