深圳网站优化推广方案,wordpress百度云下载,网站建设业务员招聘,网站设计与制作用什么软件我们主要使用3dsmax2010进行制作#xff0c;输出FBX的类型导入Unity3D中。默认情况下#xff0c;3dsmax8可以和U3D软件直接融合#xff0c;自动转换为FBX物体。 注意事项如下#xff1a; 1.面数控制 在MAX软件中制作单一GameObject物体的面数不能超过65000个三角形#xf… 我们主要使用3dsmax2010进行制作输出FBX的类型导入Unity3D中。默认情况下3dsmax8可以和U3D软件直接融合自动转换为FBX物体。 注意事项如下 1.面数控制 在MAX软件中制作单一GameObject物体的面数不能超过65000个三角形即32500个多边形Poly如果超过这个数量的物体不会显示出来这就需要我们合理分布多边形和模型数量。打开MAX场景选择File/Properties/SummaryInfo可以打开文件属性记录。其中Faces可以看到每个物体的实际数量个体数量不能超过65000个Faces面。 2.建模控制 Unity3D软件支持Line渲染和编辑之后所产生的模型。大部分模型都依靠Polygon进行制作。在模型表面可以承认多出四边形的面但不渲染交错的面。默认情况下U3D引擎是不承认双面材质的除非使用植物材质球Nature类型。所以在制作窗户、护栏等物体如果想在两面都能看到模型那需要制作出厚度或者复制两个面翻转其中一个的Normal法线。 3.文件的放置 模型可以继承MAX的材质但是文件的设置要按照以下形式进行放在项目的Assets文件夹内新创建一个Object文件夹。并在其中创建Materials和Texture文件夹分别自动存放材质球和贴图。模型物体并列保存在Object文件夹内。这个规律模式不要打乱否则会破坏整个系统逻辑。 4.材质数量控制 如果一个物体给与一个材质球那么Unity3D对于材质数量和贴图数量没有任何的限制。如果一个物体给与多个材质球我们需要用Multi/SubObject来实现但是这种罗列的材质球的数量没有严格的控制但尽量保持在10以内过多的数量会导致一些错误。如果不使用Multi/SubObject材质球也可以选择一些面然后给与一个材质球。这样系统会自动将其转换成Multi/SubObject材质。综合而言Unity3D软件对于材质的兼容还是很好的。 5.物体的质感 Diffuse Diffuse Bumped Bumped Specular 这三种类型为常用类型其中Bumped需要增加Normal法线贴图来实现凹凸。 Decal 这种材质为贴花材质即相当于Mask类型可以再Decal(RGBA)贴与一个带有Alpha通道的图像形成和原图像相叠加的效果。 Diffuse Detail 这种材质可以创造出污迹和划痕的效果即相当于Blend混合材质。 Reflective 其中各种类型可以创造出金属反射效果需要增加Cubmap贴图。 Transparent 其中各种类型可以创造出透明的效果需要增加具有Alpha的通道贴图。 注意如果要做玻璃贴图Alpha如果全是灰色或黑色即要求全透明那么Alpha就会失效如果要全透明材质Alpha其中必须至少有1像素为白色。 Nature 其中SoftOcclusion Leaves类型主要应用于片状的树叶材质。 6.物体尺寸 默认情况下U3D系统单位1等于1米等于软件1单位。如果我们制作是按照实际大小比例制作那么导入U3D引擎会自动变成原来的1%的大小。因为默认情况下U3D的FBXImporter中的Scale Factor的数值为0.01。那个我们可以将ScaleFactor的数值恢复为1但是这样会占用模型资源比较消耗物理缓存。我们也可以将这个物体从Hierarchy中选择并使用Scale放大100倍这种设置可以有很多好处并且还能通过用脚本制作动画。 7.关于复制 场景中的灯光布局重复的模型物体都可以使用系统Prefab进行关联复制这样可以改变一个参数的同时将所有关联物体属性改变。 8.山脉控制 在创建山脉之后选择Terrain/Set Resolution可以设置山脉的大小和属性。需要注意的是默认情况下TerrainWidth和Terrain Height为1000米。如果设置这个数值太小那么绘制草的时候会产生偏移因为草的尺寸必须减少到0.1的单位。也就是说山脉在处理0.1单位的时候会产生0.01的偏差如果模型太小这种偏差是显而易见的所以建议用户不要让模型过小。 9.光晕控制 光晕又称为Lens Flare即灯光光效。可以选择一个GameObject物体给与Component/Rendering/LensFlare并在Flare中增加一个StandardAssets/Light Flares/50mm Zoom项目。这样在运行之后就会产生光晕。但有时候如果光晕太远太高却看不到。一种办法是将光晕离近另一种办法是将所有摄影机Camera的Far clip plane的数值增加。 10.摄影机控制 如果场景中有多架摄影机那么如何确定第一打开时间所显示的摄影机就需要设置Camera属性中的Depth数值数值越大的摄影机越优先显示。 posted 2013-08-02 20:49 蓬莱仙羽 阅读(3) 评论(0) 编辑 Unity3D使用过程中常见的20个问题 1:天空盒有接缝怎么解决? 答:在贴图导入设置里设置Wrap Mode为Clamp.2:DDS格式怎么不显示? 答:Unity不支持DDS格式,Unity会将除DDS外的其他格式图片具有为DDS同样的优化.3:Unity如何动态载入外部模型等文件? 答:可以使用AssetBundle:http://unity3d.com/support/docum ... ce/AssetBundle.html4:脚本编辑器有语法提示吗? 答:有的,Win版使用CtrlI,Mac版使用Ctrl.5:如何使用烘焙贴图(多重纹理)? 答:不要使用Shell贴图,直接将烘焙图赋予贴图的自发光通道之上.6:怎么屏蔽Webplayer右键菜单? 答:param namedisableContextMenu valuetrue /7:为什么水面没有实时反射效果? 答:只有专业版才支持这种反射效果.8:怎么做摄像机漫游动画? 答:Max正常制作摄像机漫游动画,倒到Unity中后,将Unity的Camea拖拽到Max导出的摄像机Gameobject物体之上,作为其子物体即可.9:如何自定义Webplayer载入Logo及进度条? 答:param namelogoimage valueLogo文件名 /,param nameprogressbarimage value进度条名 /,param nameprogressframeimage value进度条外框名 /.10:GUI上怎么使用中文字? 答:导入任意中文字体,然后定义GUISkin字体为该字体即可.11:购买一个授权可以安装几台电脑? 答:可以安装于2个系统之上比如一个Win版一个Mac版.12:Max文件扔到Unity中怎么说导入失败? 答:下载最新版Fbx插件,用Max导出Fbx文件然后扔Unity中.13:如何不让摄像头穿透模型,离模型近了就像模型露面了? 答:设置相机的Near clip plane,调小一点,但是不要给负数.14:怎么用双面贴图? 答:Unity中可设置双面Shader,最简单有效的办法是直接做成双面的实体模型.15:导入的Fbx模型尺寸小于Max中的尺寸? 答:在Unity中该文件的导入设置中设置缩放因子为1.16:如何给相机添加Glow效果? 答:选中相机对象,在菜单中选中Component-Image Effects-Glow赋予该组件即可(专业版才支持此特效)17:怎么设置Webplayer默认尺寸? 答:到菜单Edit-Project Settings-Player中设置Default Web Screen尺寸即可.18:怎么设置可执行文件的启动Banner? 答:到菜单Edit-Project Settings-Player中设置Resolution Dialog Banner.19:如何设置雾效? 答:到菜单Edit-Render Settings中开启Fog及设置Fog Color等即可.20:如何设定默认Skybox天空盒? 答:到菜单Edit-Render Settings中设置Skybox Material即可. posted 2013-08-02 20:46 蓬莱仙羽 阅读(1) 评论(0) 编辑 property中strong跟weak的区别 strong关键字与retain关似用了它引用计数自动1用实例更能说明一切 property (nonatomic, strong) NSString *string1; property (nonatomic, strong) NSString *string2; 有这样两个属性 synthesize string1; synthesize string2; 猜一下下面代码将输出什么结果 self.string1 String 1; self.string2 self.string1; self.string1 nil; NSLog(String 2 %, self.string2); 结果是String 2 String 1 由于string2是strong定义的属性所以引用计数1使得它们所指向的值都是String 1, 如果你对retain熟悉的话这理解并不难。 接着我们来看weak关键字 如果这样声明两个属性 property (nonatomic, strong) NSString *string1; property (nonatomic, weak) NSString *string2; 并定义 synthesize string1; synthesize string2; 再来猜一下下面输出是什么 self.string1 String 1; self.string2 self.string1; self.string1 nil; NSLog(String 2 %, self.string2); 结果是String 2 null 分析一下由于self.string1与self.string2指向同一地址且string2没有retain内存地址而self.string1nil释放了内存所以string1为nil。声明为weak的指针指针指向的地址一旦被释放这些指针都将被赋值为nil。这样的好处能有效的防止野指针。在c/c开发过程中为何大牛都说指针的空间释放了后都要将指针赋为NULL. 在这儿用weak关键字帮我们做了这一步。 posted 2013-08-02 17:29 蓬莱仙羽 阅读(3) 评论(0) 编辑 C语言面试 摘要: 最全的C语言试题总结第一部分基本概念及其它问答题 1、关键字static的作用是什么这个简单的问题很少有人能回答完全。在C语言中关键字static有三个明显的作用1). 在函数体一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2). 在模块内但在函数体外一个被声明为静态的变量可以被模块内所用函数访问但不能被模块外其它函数访问。它是一个本地的全局变量。3). 在模块内一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是这个函数被限制在声明它的模块的本地范围内使用。大多数应试者能正确回答第一部分一部分能正确回答第二部分同是很少的人能懂得第三部分。这是一个阅读全文 posted 2013-07-30 13:15 蓬莱仙羽 阅读(7) 评论(0) 编辑 C中单例模式 //C单例模式:指一个类只生成一个对象 #include iostream using namespace std; class A{ public: static A* getA(); static A* a; int b 0; void funAdd(){ b; coutb\n; }; void funClear(){ b 0; } }; A *A::a NULL; A *A::getA() { if (a NULL) { a new A; } return a; } int main(int argc, const char * argv[]) { for (int i0; i10; i) { (A::getA())-funAdd(); if (i 4) { (A::getA())-funClear(); } } return 0; } posted 2013-07-29 19:01 蓬莱仙羽 阅读(4) 评论(0) 编辑 OC对象的动态和静态构造区别 Student.h: #import Foundation/Foundation.h interface Student : NSObject property(nonatomic,retain) NSString * name; property(nonatomic,assign) int age; end Student.m: #import Student.h implementation Student //动态方法在main函数中类alloc了之后调用但是要手动管理内存要手动释放 -(id) initWithAge:(int)age{ if (self [super init]) { _age age; } return self; } //静态构造方法,在main函数中不需要你手动管理内存释放 (id)studentWithAge:(int)age{ Student *stu [[[Student alloc] init] autorelease];\ stu.age age; return stu; } -(NSString *)description{ return [NSString stringWithFormat:name:% age:%i创建了,_name,_age]; } -(void)dealloc{ NSLog(name:% age:%i被释放了,_name,_age); [_name release]; [super dealloc]; } end main 1 #import Foundation/Foundation.h 2 3 #import Student.h 4 5 int main(int argc, const char * argv[]) 6 7 { 8 9 autoreleasepool { 10 11 //动态方法需要手动释放内存 12 13 Student *stu1 [[Student alloc] initWithAge:10]; 14 15 stu1.name dingxiaowei; 16 17 NSLog(%,stu1); 18 19 [stu1 release]; 20 21 //静态构造方法不需要你管理内存 22 23 Student *stu2 [Student studentWithAge:20]; 24 25 stu2.name wangning; 26 27 NSLog(%,stu2); 28 29 } 30 31 return 0; 32 33 } 如需转载请自行联系原作者