-svn
svn的默认diff 工具,全命令行,看起来确实不太方便,使用tkdiff之后,整个人感觉好多了,主要在svn找一个好用的svn工具也太难了,还不如直接命令来的方便。
git也是一样的,
Coder is running!
-svn
svn的默认diff 工具,全命令行,看起来确实不太方便,使用tkdiff之后,整个人感觉好多了,主要在svn找一个好用的svn工具也太难了,还不如直接命令来的方便。
git也是一样的,
这两天在翻 啊哈算法 这本书,写的比较轻松幽默,但感觉也有很多不适应的地方,比如介绍的第一个算法,bubble sort,就好像不是那么回事,跟我们学的都不一样,最后统计了下,对于同样的5个数,他的样例运行o(N)是20!
哈哈,每逢双11想京东,每年11.11购物节照常来临,今年度想买的书,攒到今天,终于可以一下子全部买入,印象中大规模买书这是第二次,上次买了一大批技术书籍,说来惭愧,没有一般是读完的,主要还是因为自己从来没有养成买书、看书、鉴书的习惯,说到底还是穷。
现在生活不富裕,但按说买书还是ok的,况且,大部分看书的人,谈起来这点付出和收获,肯定想当地的成正比。
自从前年买了kindle,这两年陆陆续续也看了一些书,主要读书的习惯实在去公司的地铁上面,主要是读了很多小说,没读过技术相关的书籍,电子书的通病,无非是涉及到插图、图例、公式的排班特别糟糕,这也是纸书不死的最大原因吧。
看屌丝翻身的故事,无一不是勤奋读书来的,买了这些书,就得读,读书2015,只剩两个月,也能读下不少书的。
以往主要是买自己了解,但不熟悉的书,这次买的书,有包含完全陌生领域的书!
使用了hexo之后,感觉整个人好多了, 这才是程序员写文章的正确方式,没有数据库,以markdown 来写,所有的内容全部表现在md文件里,
但是,一旦你选择在多个电脑上同步,很多人说使用同步盘,我就试了下,通过18000+个文件 ,我果断放弃。最后才发现使用git管理才是对的,.gitignore都给建好了。
这样,发一篇文章的正确流程就变成了hexo n, hexo g, hexo d & git push 了
拥有一台属于自己mac电脑是一直以来的愿望,最早使用mac,是在第一家公司,使用vmware(盗版的)安装的虚拟机,运行的是SnowLeopard,通过vnc软件连接上去,显示的效果的很差,但是很容易看出来,mac交互确实不一般,就这样,在上面使用xcode3.2,学会了oc,学会ios开发,学会了hg,那真是个美好的时代!
在虚拟机下,前前后后至少使用了有一年多时间吧,后来辗转来到了游戏界,进入第二家公司,刚开始用的是公司领导的mbp 13. 并没有觉得特别的兴奋,可能是因为那是个低配,硬盘也特别的小,还装了个双系统, 到最后没办法,我连itunes都删了,才算腾出一点新空间,来安装开发软件,后来,公司终于为我配了一个mac mini,加了内存,运行的速度还能接受,搭配着一个19寸的Philip的显示器,陪我大约度过了1.5年的工作与生活;毕竟是属于自己的,就各种安装了,各种定制了。
后来有辗转来到了北京的搜狐畅游,作为一个土豪公司,我拥有了很长一段使用iMac的经历,每天使用magic keyward+黑色dell烂鼠标,很有喜感有没有。
后来又辗转(我他妈这是第3次辗转了)来到了现在的公司,一家知名的外国游戏开发商,mac mini是标配,不过同事都是各种mbp, mba,让我各种眼馋, 加上公司加班强度,越来越大,周末加班的需求,让我不得不自己买一个了,哈哈,还是很开心。
现在有微博,又有微信,这些个平台上都可以简短的说上几句话,哪还有没有必要,专门开辟个页面,来发牢骚,记流水账?
如果,总是立意创新,长篇大论,估计一年也写不了一篇,之前的blog不就是这样的废掉的吗?
另外,愈发觉得,语言沟通和表达能力随着年龄的增长越来越好, 反而是写在纸上的内容,干燥,无聊,不通顺,充满错误!
有了想法,就写,能多则多,不要强求!
刚开始使用windows下的Sticky note,一个小附件,简单便捷, 但是在互联网时代,显得非常简陋,不能同步,不能跨平台
后来就一直使用纸质的便签,但是容易遗落,经常认不清自己写的东西,不易修改,不易归类
evernote 中可以很方便的加入checkbox,就拿他做todolist.
今年压力山大, 一直想要购齐苹果产品的几大件,现在终于齐了,这件产品应该是目前买过的最贵的日用品,心里面压力很大。因为买电脑学习这个噱头已经用了很多年了,这个是人生中第三台电脑了。
随着年纪的增长, 也结婚了, 也必须得使用电脑坚持一些事情了,前景光明。
Basic Sphere
cube, sphere, capsule, cylinder, plane
Mesh
网格
Mesh Filter: 获取mesh, 并传递到所属的对象gameobject上,如果网格拥有蒙皮信息,将创建skinned mesh renderer.还要为gameobject添加一个mesh render,才能让对象在scene中渲染出来。让对象在scene中渲染出来。
Text Mesh: 文字渲染器, 生成3d文字。
Mesh Renderer: 从filter获取网格模型,根据transform组件在scene中渲染。
Effect
特效,效果
Particle System: 粒子,烟雾,气流,火焰,瀑布
Tail Renderer: 轨迹/拖尾 Gameobject 在scene中产生拖影效果
Line Renderer: 3d空间中2-N个点之间的连线,支持自定义宽度和材质贴图,需要多个Gameobject添加LineRenderer.
Lens Flare: 镜头光晕,强烈光源的折射效果。
Halo: 光环,光晕,光源对象或自发光物体光晕和空气中细小灰尘
Projector: 幻灯片,将材质纹理投射到Scene中所有与视锥相交的gameobject上。必须projector类型的Shader配置才能工作。
Legacy Particles:
Physics
物理组件: 各种物理效果 Nvidia Physx物理引擎
Navigation
寻路导航
NavMesh Agent: 寻路,存放导航网络代理导航信息
Off-Mesh Links: 导航网格代理 将分离的网格连接起来
Navmesh Obstacle: 导航网格障碍物,通过将固定位置的障碍物来烘培进行计算。
Audio:
Audio Listener: 侦听器
Audio Source: 音源
Audio Reverb Zones: 混响区
Audio Low Pass Filter: 低通滤波器
Audio High Pass Filter: 高通滤波器
Audio Echo Filter: 回响过滤器
Audio Distortion Filter: 失真滤波器
Audio Reverb Filter:
XXXXX
Rendering:
渲染
Camera: 摄像机 数量不受限制
Skybox: 天空盒 包围Scene的巨大立方体
Flare Layer: 耀斑/光晕层 camera默认带有
GUI Layer: ui 在游戏运行状态下才能被渲染出来,摄像机默认带有的组件
Light: 灯光,各种光,平行,点,方向光
Light Probe Group: 动态光探头/灯光探测器 添加一个或多个探测器,为移动物体实事计算光照贴图
Occlusion Area: 遮挡区域 运动的游戏对象身上,遮挡剔除功能
LODGroup: LOD Group 细节级别,
GUI Texture: gui 使用的图片
GUI Text: 文本
Miscellaneous:
综合
Animator: 生成器
Animation: 动画
Network View: 网络视图 网络通信组件??? 状态同步 和 RPC(remote procedure call <html/>)
Wind Zone: 风域 用来模拟游戏对象受风力影响产生效果
`create object -> add mesh filter -> add mesh render(add material for render)`
javascript C sharp Boo
__Activate Trigger__: 激活触发器 激活场景中的触发器对象
__Drag Rigidbody__: 拖动刚体
Camera Control:__Mouse Orbit__: 鼠标轨迹 camera 根据鼠标的偏移值旋转
__SmoothFollow__: 平滑跟随 camera 跟随父对象进行移动、旋转,跟随的延迟和阻尼系数
__SmoothLookAt__: 平滑注视 camera 永远对准约束的游戏对象
Unity Script:__CombineChildren__: 结合子对象 将相同材质的对象们结合起来,达到优化的目的
__MeshCombineUtility__: 网格合并工具
light 的类型
directional:放到无限远
point: range 类似于灯泡
Spot: 锥形区域,耗费gpu资源
Area Light: 光照贴图烘培
Rendering paths : vertex lit顶点光照 , forward正向渲染, deferred lighting延时光照
主要是阴影的效果
创建光源调节颜色可以制造处午后的光照效果
创建Camera
. Perspective:透视
. Orthographic: 正交
. Camera Component:
clear flag : skybox SolidColor DepthOnly Don’tClear
CullingMask: 剔除遮罩 根据游戏对象指定的层控制摄像机渲染的游戏对象。
Projection: Perspective:透视,透视方式渲染对象 Orthographic:正交
Depth: 深度,控制摄像机渲染顺序,较大值在之上渲染
ClippingPlanes: 剪裁平面 开始渲染与停止渲染之间的距离near far
RenderingPath: 渲染路径
Terrian Editor 地形编辑器
unity 底边lod 功能,会根据地形距离及起伏程度调整pathc网络的疏密程度。
TODO:
CharacterController
- First Person Controller
- 3rd Person Controller
粒子系统
粒子发射器、粒子动画器、粒子渲染器, 可以通过脚本控制每个单独的例子
Send Collision Message 模拟子弹和冲击伤害
Skybox 天空盒
使用了特殊类型shader的材质, 根据指定的纹理模拟远景、天空效果
- DawnDusk
- Eerie
- MoonShine
- 自定义天空盒
Fog雾效
远看有,近看没有
Water效果
Sound效果
丰富且复杂的动画系统
- 人体角色工作流和动画创建能力
- Retargeting运动重定向 把动画从一个角色模型应用到另一个角色模型
- Animation Clips 动画预览能力
- 动画间复杂交互作用的可视化
Mecanim 工作流
游戏中使用角色动画
Animator Controller角色设置行为,包含状态机(statemachines)、BlendTrees、脚本控制的Events
- Controller
- Avatar
- Apply Root Motion 控制角色的位置
- Animate Physics 动画物理交互
- Culling Mode 动画剪裁模式
- 总是启用动画
混合树Blend Tree
区别于 动画过渡
RigidBody 刚体 接受外力、扭矩力
transform组件 不会受到外力
RigidBody与游戏对象的关系
- Parenting 半独立方式随parent 移动
- Scriping 在游戏对象刚体上添加AddForce()和AddTorque()添加作用力和扭矩力
- Animation 在动画和物理系统间切换对象的控制权,被标记为动力学模式,直接操作Transform,刚体会影响其他对象,但自身不会受到影响。
Colliders 碰撞体
没有碰撞体的刚体 在模拟中会彼此穿过
physic material 不同的物理材质类型决定了碰撞体与其他对象的交互形式
- Box Collider
- Sphere Collider
- Capsule Collider
- Mesh Collider 网格,获取网格对象, 开始convex参数才能是mesh 碰撞体之间碰撞, 耗资源。网格碰撞体3角行数量少于255省。
- Wheel Collider
碰撞
类似于火箭 起初没速度、不断加速
Scene End ball game 物理引擎练习。
增强静态场景光照效果, 不能作用到动态游戏对象
- Single Lightmapping 静态、仅生成一张Far光照图(保存了非实时光源)、
- Dual Lightmaps 区分实时、非实时区域,bake near,far 两种贴图, 近的实时渲染、远的使用贴图,临界区会平滑的插值过渡。
- Directional Lightmap 静态物体使用, 光照贴图+实时Bump/Spec映射效果。
Scene中放置采样点,收集周围明暗信息,对动态对象临近的采样点进行插值,结果作用于对象上
3d游戏World中 动态物体自动寻路的一种技术
- Navigation Static 参与导航网格烘培
- OffMeshLink Generation 关联分离的mesh
- NavigationLayer Default, NotWalkAble, Jump
- Bake Radius
- Navmesh Obstacle组件 路障、
yield return 代替Timer 使用
Occlusion Culling 提高渲染性能
ImageEffects 应用在Camera上
- 特效编写在OnRenderImage()函数
向量
Basic Concepts
- 模 向量的长度
- 标准化 保持方向不变 将向量长度变1
- 单位向量 长度为1
- 零向量 各分量均为0
运算
u.v == 0 u,v垂直 u.v >0 u,v小于90’, u.v <0 u,v夹角大于90
矩阵
BasicConcepts
- m行n列 3d 中常用4x4矩阵
运算- 平移
- 旋转
- 缩放
Matrix4x4类
齐次坐标
四元数
坐标系
+Transform.TransformPoint() 局部坐标系->世界坐标系
+Transform.InverseTransformPoint()
+Transform.TransformDirection(Vector3.forward)计算世界坐标系下物体的前方向(物体的前方向为局部坐标系z轴的正方向)
渲染管线
- Rendering 3d物体场景 转化为二维图像
- RenderingPipeline 显示芯片内用于处理图形信号而相互独立的并行处理单元,每个处理阶段都从上一阶段接受输入数据,然后进行处理
管线处理的数据是顶点、几何图元和片段- FixedRenderingPipeline 固定管线 顶点处理和像素着色是固化的
- 可编程Pipeline(shader)
+D3D9 渲染管线有9个阶段 局部坐标transform->世界坐标transform->观察坐标transform->背面消隐->光照计算->裁剪->投影->视口计算->光栅化
C Sharp
MonoBehavior
组件变量
GetComponent, GetComponents, GetComponentInChildren, GetComponentsInChildren
Time类
Time
- time
- timeSinceLevelLoad
- deltaTime 上一帧的时间
- fixedTime fixedUpdate时间
- fixedDeltaTime
- maximumDeltaTime
- smoothDeltaTime
- timeScale
- frameCount 渲染帧的总数
- realtimeSinceStartup 游戏开始到现在经历的真实时间
- captureFramerate 固定帧率
Random- seed 随机数生成器种子
- value
- insideUnitSephere
Mathf- PI
- infinity
- NegativeInfinity
- Deg2Rad
- Rad2Deg
- Epsilon
Coroutine协同程序
多个协同程序,同时只有一个在运行,别的会挂起
Input
鼠标、键盘、摇杆/方向盘/手柄
- compensateSensors 屏幕方向补偿感应器
- gyro 陀螺仪
- mousePosition
- anyKey
- anyKeyDown 任意键按下第一帧返回true
- inputString 键盘输入字符串
- acceleration 3维空间中的线性加速度
- accelerationEvents 上一帧的加速度数据列表
- accelerationEventCount 上一帧的加速度参数数据长度
- touches 触摸状态列表
- touchCount 所有触摸状态列表长度
- deviceOrientation
.- GetAxis 虚拟输入轴的值, -10 - 10的渐变值
- GetAxisRaw
- GetButton 虚拟按键是否被按下
- GetButtonDown 在按键按下的那一帧返回true
- GetButtonUp 在按键松开的那一帧返回true
- GetKey 指定的按键被按下时返回true
- GetKeyDown 指定的按键按下时返回true
- GetKeyUp 指定的见松开
- GetJoystickNames 所有摇杆名称数组
- GetMouseButton
- GetMouseButtonDown
- GetMouseButtonUp
- ResetInputAxes重置输入
GUI
内置GUI
Shader开发
渲染管线中的特定处理阶段提供算法的一段代码
实时渲染, 镜头景深、动态模糊、卡通渲染
shader, shaderLab, 表面着色器(Surface Shader)
Shader 'MyShader'{
Properties{
_MyTexture ("My Texture", 2) = "white" {}
}
SubShader{
//surface shader, vertex & fragment shader, fixed function shaders
}
SubShader{
//备选shader
}
}
选项
- TexGen 纹理生成模式 ObjectLinear, EyeLinear, SphereMap, CubeReflect, CubeNormal
与OpenGL的纹理生成模式相对应,如果使用自定义的顶点程序,该参数将被忽略。- LightmapMode 纹理将接受渲染器的光照贴图,不从Material材质
- Pass 每个Pass都会渲染一次对象 根据光照交互情况渲染多次
Fog {Mode Off}
Blend One One
}FixedFunction Shaders
Surface Shaders
嵌在ShaderLab的结构代码
Vertex & Fragment Shaders
使用vertex时,FixedFunction会关闭,vertex关闭固定管线中的3d transform、光照、纹理坐标生成,fragment会替换掉SetTexture的纹理混合模式
Batching
渲染过程:camera可视范围->任务模型(法线、本地位置、UV), 索引(各顶点形成的3角形),变换(位置、缩放、旋转、摄像机位置)、
编辑器扩展
Editor Class for extend dev。
+继承EditorWindow @MenuItem
+自定义Inspector
+自定义Scene onSceneGUI()
自定义二进制文件ext 改为.bytes
AssetBundle API
- BuildPipeline.BuildAssetBundle 任意文件类型的Asset打包成AssetBundle
- BuildPipeline。BuildStreamedSceneAssetBundle 一个或N个Scene以流的方式打包成AssetBundle文件
- BuildPipeline.BuildAssetBundleExplicictAssetNames 与build相同,但可以额外的指定名字
- 使用PushAssetDependencies() 和 PopAssetDependencies()来设置asset之间的依赖关系
使用网络下载AssetBundle
加载Asset
卸载AssetBundle
卸载没有使用的Assets
Instantiate 的GameObject使用 Destroy() DestroyImmediate()
- FBX(静态资源、动态资源)的导入 Model Label 可以设置FBX文件的Mesh, Material, UV, Normal 切线 Rig 设置Animation Type
- 人物身上挂载了多个脚本
概述&Concept
3D模型、材质与动画
Components Mesh