- 博客(48)
- 收藏
- 关注
原创 unity3d Relase Size
因为一直做的网页游戏。所以没太关注。如果是本地话的时候客户端大小问题。今天做了一个实验:端游:只会按照你运行Build时刻在工程里面的gameobject来计算大小。但是最小都包含了unity3D的lib在里面所以一定有9m+(exe大小)。其它没用到的资源就散放着了。页游:只会包含一个.unity3d文件大小是当前工程所有用到的gameobject已经obj引用到的资源大小。因为
2012-11-19 22:46:16
975
1
转载 androidsdk
在SDK Manager下Tools->Options打开了SDK Manager的Settings,选中“Force https://… sources to be fetched using http://…”,强制使用http协议。Windows在C:\WINDOWS\system32\drivers\etc目录下,Linux用户打开/etc/hosts文件。打开文件后添加以下内容。
2012-11-18 10:49:23
674
原创 U3D 4.0 beta 的局限
你妹被坑了。4.0是beta版。然后beta版居然不能发布成web...一运行就提示你妹的beta只能自己电脑用。我靠,合着谁会用u3D来做PC端游啊。。。然后我试着发布成flash.你妹不支持terrain .不带这么玩我的。虽然代码可以套用。但是以前导出的unity3D文件。全部不能用。。你妹。想换回去3.56都不行。资源全部要导一次。还有没有多线程调式环境。。用了
2012-11-11 21:05:41
1134
原创 U3D 像C++一样去开发
老毛病又来了。一旦会了。就懒得写了。本来以为4.0多了很多新东西。不过发觉不怎么用的上。和3.56差不多。妹的。把以前没搞的一些东西融合到了框架里面。发觉u3d也是完全可以按照标准C++引擎模式来开发的。呵呵虽然有点绕。不过我觉得很适合中国的开发。程序就完全脱离编辑器。美术也完全不用知道什么把这个脚本代码给这个Gameobject.为什么。因为中国美术真心不会。。 怎么让U3D像一个
2012-10-31 22:42:44
4284
原创 Unity3D socket
1年前的unity3D项目里面之封装了引擎层。完全没涉及到服务器收发。最近继续深入u3d了。打算弄个框架。自然这个socket要我自己写了。花了1天的时间大概写好了。自己写了一个服务器一个客户端测了一下。还不错。哈哈哈。废话不说上代码.使用双线程收发。这里有个取巧。我在每帧更新之前。在主线程调用收线程的数据。在每帧更新之后。在主线程发送数据到发线程。这样我收和发的过程中
2012-10-21 19:59:55
7617
2
原创 一个关于异步下载的封装
一开始还是先骂一声妹的。好不容易搞好多线程调式了。结果发现不能在里面调用任何unity3d的api.我操。你敢不敢在恶心点。人家fmod也不是多线程安全的。但是我自己保证的情况下还是准你调用的啊。但是我保证安全你还不让我调用。你要死啊。搞个协成。习惯了在C++的淫威下只手遮天。想干嘛就干吗。现在被困在你的所有api都要砸主线程调用。我勒个去。不过没办法。谁叫你是主动一方呢。我只能接受了。
2012-10-20 08:01:12
1013
原创 关于如何导出 unity3d 如何调式多线程
这段期间遇到两个比较恶心的问题。1个如何导出unity3d文件。因为一开始无意中环境正确。所以右键菜单里面有了导出选项。所以没注意。谁知道安装了新版本没了。郁闷了。后来自己搜索了半天。才发现需要把assertbunde工程。下的两个js文件放到editor下。右键菜单终于有了导出.unity3d.你妹。没有买正版没有技术支持的伤不起啊。2.如果调式多线程c#.看到unity3d是支
2012-10-18 19:26:10
2220
转载 Gameobject virtual function
Unity3D中所有控制脚本的基类MonoBehaviour有一些虚函数用于绘制中事件的回调,也可以直接理解为事件函数,例如大家都很清楚的Start,Update等函数,以下做个总结。meebe.netAwake当前控制脚本实例被装载的时候调用。一般用于初始化整个实例使用。Start当前控制脚本第一次执行Update之前调用。Update每帧都执行一次。这是最常用的事件函数
2012-10-04 08:25:40
678
原创 Unity3D 计划要做的事情
Unity3D 代码层1.需要一个ResourceManager 这个类管理所有需要的资源。主要思想是不希望重复加载资源。或者下载资源。资源复用。2.一个多线程Task管理。提供并行处理。可以处理很多事情。比如下载。加载。一些判断更新。一些对象申请释放。3.一个场景信息管理资源操作类。用来记录场景里面的所有资源的加载和卸载等等。大概思想是看不到的。不在玩家周围一定距离的就不下载。反之下
2012-09-27 18:57:56
2351
原创 unity3D begin
自己真的很懒。。居然这么就不更新博客。不过每次我打算研究一个东西我就会写。这次又要开始研究unity3D了。(1年以前用过。以为只是独唱。不想1年以后有可能靠他生活呵呵) 。哈哈。为了爱与和平。中国这个畸形的游戏产业啊。我不说你也懂的。我只能全精通了。等我有足够的 “满令”我在追求我自己的理想吧。我不介绍怎么用u3d.有比我多的人。我记录我自己设计的框架。和我要写的东西。也顺便分享一下吧。希望可以
2012-09-27 18:37:14
782
原创 帧渲染系统过程笔记
<br />帧渲染系统从<br />NiRenderFrame开始<br />NiRenderFrame::Draw()开始了一帧的渲染。理论上应该一个NiRenderFrame就够了。应该是用不到多个的。<br />Draw开始NiRenderFrame会调用注册过的渲染前回调函数。<br />m_pfnPreProcessingCallback(this, m_pvPreProcessingCallbackData)回调给应用程序做处理.<br />NiRenderFrame会判断自己是否是需要使用Be
2010-07-28 14:49:00
1217
翻译 纹理寻址
<br />D3DTADDRESS_WRAP 不断复制<br />D3DTADDRESS_MIRROR 镜像一样不断反转<br />D3DTADDRESS_BORDER 超出的就按照边框颜色<br />D3DTADDRESS_CLAMP 超出取图像边缘像素颜色。
2010-06-25 10:27:00
660
原创 gamebyro--容器的使用
<br />1. 所有GB容器的使用方法<br />NiTobjectArray 使用这个容器的所有类必须继承自NiMemobject<br />而且必须自己实现了<br />!=操作<br />==操作。<br />一个传入int的构造函数。函数目的是为了弄一个NULLClass<br />具体参考如下<br />classDragonRect : publicNiRect<long><br />{<br />public:<br />DragonRect(){};<br />DragonRe
2010-06-09 14:32:00
761
原创 gamebryo --空间扭曲效果
看了一下 金属战争这个demo.里面有好多的特殊效果啊。甚至貌似还用到了ds。很牛叉。看了一天也没看完一个demo.只能说这个demo实在是太多东西了。集中火力看了一下他的扭曲怎么实现的。所有带有扭曲的物体有个标识。用的标识的物体会被渲染到一个 shimmer buffer 这个buffer和屏幕一样大。用来作为mask查询时候用。每个像素的 r 被用来做x偏移。g用来做y偏移.
2010-05-19 17:29:00
1722
原创 Gamebryo 带子的实现
看到GB有个例子有刀光(带子)觉得不错。研究了一下。他给予了3个参数:带子的段数(四边形数)带子透明化的最大速度和最小速度. 他大概的意思是先创建一个四边形四边形的uv和 color-a 是根据你一同有多少个四边形来等分。也就是整个完整的四边形带子。只用了一个纹理。从头到尾 A分别是0-1m_kVertices[m_iStartingIndex] = pkTop->
2010-05-18 17:21:00
1676
6
原创 gamebryo--字体
GB提供了中文字体的现实。用Ni2DString首先需要用NiFontCreator工具创建一个指定的字体文件。NFF创建好了使用NiFont创建这个字体.然后就显示吧。Ni2DString::SetText()就可以显示的文本Ni2DString::SetPosition()设置子的位置实际上Ni2DString内部就是用了一个NiMeshScreenElements
2010-05-14 16:51:00
911
原创 gamebryo---NiEntity
NiEntity 是一个纯编辑器使用的东西。他提供一个逻辑的概念 实体。这个实体可以是任何东西。他包含了6个相关的东西NiEntity Interfaces 注意NiEntity不使用NiRefObject他自己使用另一套引用计数。 用来通用的转换一个实体。查询一个实体的成员属性等等。NiEntity property 实体所具有的数据。可以是类型比如是一个模型。也可以是一个字
2010-05-14 16:25:00
810
原创 gamebryo---地形
看了一下gamebryo的地形相关例子。没有详细研究他内部怎么分的。但是确定的是他地形是支持LOD的。并且已经实时应用了。不过顶点数目。我的天啊也太多了吧。地形可以用gsa文件。或者地编导出的数据来加载有2个流NiEntityStreaming 一半数据NiEntityStreamingAscii Acsii格式的数据使用对应的load就可以加载一个磁盘文
2010-05-13 17:17:00
1427
1
原创 gamebryo--NiStandardMaterial
今天看了一下NiStandardMaterial 以为终于开始将GM的材质文件格式了。结果意外的发现居然不是他只是GB对于多重纹理的支持。GB支持很多的纹理类型。有些是直接使用就可以。有些需求提供额外的数据流。有些需要提供额外的纹理去采样。今天没心情看。只能大概说下有哪些类型。至于怎么用。很简单创建一个 textureProperty 然后设置使用到一个texture 上。注意一下的所有纹
2010-05-13 11:44:00
1217
原创 gamebryo--ShadowMap的使用
gamebryo支持3种shadowmap.(2.5版本)以后有没有新的不知道。分别是::NiStandardShadowTechnique, NiPCFShadowTechnique, and NiVSMShadowTechnique 。可以参考我另一篇看细节。看了下pcf效果最好。但是最卡。nistandardShadow和VSM效率差不多。我觉得应该不会差不多啊。但是看帧数是相近的
2010-05-12 15:38:00
1311
转载 转自Normallife--Shadow Map种类
Shadow Map :用于生成阴影如果要了解shadow map,最好的办法就是去看dx的demo 。其算法大意如下:运用渲染到纹理方法(render to target),以场景中的光源为坐标原点,建立光源坐标系,从而可以得到相对于光源的场景深度信息,将其保存在render target上(一般是R32F的surface),之所以选择R32F是考虑到场景的精度问题。这里的R32F就是我
2010-05-11 16:37:00
906
原创 gamebryo--如何应用shader
gamebryo的shader几乎支持所有已知类型。前面一篇已经说过了。这里说下他的流程:首先对于一种shader方式要先 new 一个NiDefaultClickRenderStep可以设置为不激活NiDefaultClickRenderStep::SetActive();然后根据shader的作用把step加入到NiFrame.比如你是后期效果那么就要加入到队列的后面m_spFra
2010-05-11 15:42:00
1563
原创 gamebryo--NiMetrics性能剖析
Gamebryo提供一个叫NiMetrics的东西来帮助剖析性能。可以保存为xml格式以后查看。也可以显示为先线段波形式运行时查看。一开始我还以为是n卡那个perfHud.原来是他自己的。他还真有闲心啊。应用程序的app自己实现CreateOutputModules定义xml文件输出的呢用NiXMLMetricsOutput* pkXML = NiNew NiXMLMetric
2010-05-10 14:29:00
806
原创 gamebryo--Pick的2个方法对比
gamebryo提供了2中Pick的方法。1.从屏幕打一条射线进去。和指定的node包围体碰撞。如果打中了就返回。优点:可以得到而外的查询数据,比如打到的顶点法线。颜色等等。缺点:如果精确到三角形那会非常慢。不精确又有可能导致打空。2.为每一个需要被检查碰撞的物体使用 ObjectPickMaterial 材质。他的做法是为物体使用一个很小的16*16的纹理做基本的一次渲染。渲染
2010-05-10 10:03:00
754
原创 gamebryo--Instance
今天看了GB的instance。看文档貌似支持cpu和gpu的instance但是很奇怪的是他的例子却没有例举那么多。Meshinstacing是用了cpu来做动画。gpu来instace.其实这个我一直没完全搞明白。特别是floodgate看他都是拿cpu在算啊。但是问gb的官方他们又说floodgate是用到gpu的。这个instance也一样。看来还没研究透啊。先不管吧。继续说怎么用gb
2010-05-07 17:54:00
914
原创 gamebryo--NiStream和NiMesh和NiMeshModifier的关系
GB里面的自定义几何体几乎都是用NiMesh。要添加程序方式的数据的时候需要用到。比如编辑器的刷水。就需要程序动态产生。首先定义Mesh的图元方式NiMesh* pkMesh = NiNew NiMesh();pkMesh->SetPrimitiveType();接着为这个Mesh绑定数据流这样是保证了Mesh的可编辑可变。因为到时候你改变数据流的数据就OK.也就是数据和封装的
2010-05-05 17:10:00
1746
3
原创 Gamebryo 一句话技巧
遍历所有节点做一件事情可以:NiTNodeTraversal 有三个函数。可以根据具体的函数来做一些事情。需要自己实现一个函数去做事情。函数类似如下struct RemoveAlphaBlending{ void operator () (NiAVObject* pkAVObject) { NiAlphaProperty *pkProperty =
2010-05-04 16:29:00
846
原创 GameBryo NiNode层次
觉得有必要弄清楚NiNode的层次1. NiMemObject 不用说。所有需要让GB内存管理的都集成自这个 | NiRefObject 引用计数的封装。继承这个的可以使用智能指针。 NiPointer | NiObject 提供了RTTI的支持。所有需要run-time转换的都集成这个.
2010-04-30 16:27:00
942
原创 GameBryo 碰撞系统[1]
越来越感觉一个引擎真不是一个人应付的了的。但是现在的情况只能先应着头皮去弄。看了GB的静态碰碰撞这个例子。看得头都大了。引申出来的东西太多了。从GB本身的概念。再到GB和maya.max等的结合。现在依然还是没全通。但是先记录着吧。不然怕明天又忘了.GB的碰撞流程。1.首先美术需要在DCC里面用GB的插件选择产生ABV,或者ABV proxy或者OBB等碰撞元素。然后输出到nif才能有
2010-04-30 16:10:00
1036
原创 sm2.0和sm3.0的差异
我们先来看看下面的表格,从中可以清楚的了解到Shader Model 3.0所具备的新功能。Pixel Shader功能Shader 2.0 Shader 3.0 描述Shader长度 96 65535+ 允许采用更复杂的阴影、光线和程序 动态分支
2010-04-28 17:36:00
3236
原创 gamebryo的动画系统【1】
学习了一下GB的动画系统。GB的动画系统从企鹅例子中看出。还是很强大的。GB支持skeleton和skin的LOD.分别在maya 或者max导出时指定就可以了。NiSkinningLODController用来控制当前所属层次GB支持帧事件系统。不过很麻烦需要从maya导出或者maxNiActorManager::RegisterCallback可以注册关键帧回调。他是根据字
2010-04-28 12:01:00
1034
原创 gamebryo的Badsushi例子学习
估计是我看的顺序不对还是咋的。这个例子实在是包含太多了。搞得我研究了半天。但是发现太多以至于要是把全部弄清楚细节。那可以等到来年花开时。。。所以大概研究了一下他这个例子的框架和想要表达的主要东西。例子根据用户指定来产生很多鱼。所有鱼按照异性的曲线游动。屏幕正中心有一个NiMeshScreenElements用来pick这些鱼。被pick到的会播放一个动画。(涨起来)比较好玩。主要用到的
2010-04-27 11:30:00
1374
原创 GB后台加载
看GB的demo了。前段时间怀疑的事情还好只是怀疑。我可以继续GB了。GB的NiStream::BackgroundLoadBegin提供后台加载功能。基本上都可以用这个来实现。自己重载已经提供的一些虚函数就好。每帧简单的调用 NiStream::BackgroundLoadGetExitStatus 或者 NiStream::LoadState kLoadState; NiStr
2010-04-26 15:40:00
615
原创 GB学习【9】--渲染流程
GB第9个例子也是最后一个基本例子。讲了GB的frame render system 和renderTexture通过重载createframe来加入自己需要的渲染。m_spScene->GetObjectByName("DisplayScreen")可以得到屏幕当亲的backbuffer.然后通过得到对应的属性NiTexturingProperty* pkTexturing =
2010-04-22 16:22:00
905
原创 GB学习【8】--屏幕元素和纹理基础
第八个例子。讲了如何在屏幕上贴图。以及GB的纹理类。例子基本和以前的例子没啥区别。首先通过NiSourceTexture来加载磁盘文件。然后通过ConvertFromNDCToPixels计算了长宽。目的是为了让图片能以原来的尺寸展示。GB的纹理主要用NiSourceTextre 比较通用。 还有NiDyanmicTextureThese textures are co
2010-04-21 15:27:00
993
原创 GB学习【7】--鼠标键盘
第7个例子讲了一下怎么使用键盘和鼠标例子很简单在上一个基础上加入和一些键盘控制。 NiInputKeyboard* pkKeyboard = m_pkGameApp->GetInputSystem()->GetKeyboard()这样可以得到键盘的所有信息,估计是做了个m_aucKeystate。根据他提供的函数就可以判断键盘信息了。鼠标的话。有一个NiInputMouse.
2010-04-21 14:29:00
608
原创 GB学习【6】--时间控制器
第6个例子这个例子比较复杂。介绍NiTimerController 的用法。以及延伸出来的GB对于对象的tracker的应用。NiTimerController可以用SetTarget方法设置需要控制的对象。如果需要特殊控制可以自己重载一个就可以。好事满好的。这里需要注意所有继承自NiObject的都要使用NiDeclareRTTI,NiImplementRTTI组合来保证可以在将来类
2010-04-20 17:39:00
1509
原创 GB学习【5】--坐标系和基本几何变化
第五个例子。变换这一张终于有点意思了。场景终于动起来了。实例重载了UpdateFrame()用来每帧更新。也为我们以后的更新找到了入口。函数简单的对直升机模型做了一些变换。随着时间沿着Z轴转动NiTransform 是用来变化的类。从中看到(((m_Rotate * kPoint) * m_fScale) + m_Translate) 奶奶的向量右乘。又是列矩阵.用惯了
2010-04-20 15:47:00
724
原创 GB学习【4】--场景管理--节点方式
教程的第四个例子。讲述了怎么把一个模型挂到场景上。个人觉得GB这种全部资源都叫nif非常恶心。不区分后缀不区分资源类型,都按照他的那个读取流程。比如我的某个资源就是不想要header不想弄那么多对象是啥。node是啥的还不能直接用他的Stream.恶心归恶心。也没办法。和大部分引擎一样。加载出来的Nimesh挂到场景预先产生的一个node上。Nimesh : public Ni
2010-04-20 15:11:00
769
2
原创 GB学习【3】--Shader基础
第三个例子是shader的创建等等。代码依然简单。但是延伸出来非常多。shader系统最开始可以注册一个回调函数来调适错误。NiShaderFactory::RegisterErrorCallback接着需要为系统指明那里有shader资源NiShaderFactory::AddShaderProgramFileDirectory然后通过调用加载和解析函数来解析所有的shader.同时可以指定是否
2010-04-19 16:40:00
978
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人