这是我参与「第五届青训营」伴学笔记创作活动的第12天。
笔记
一、数据可视化
converts data into a visual representation
正确地表达,不产生偏差和歧义
- 透视失真:3D可视化中
- 图形设计&数据尺度:视觉预期,例:轴刻度
- 数据上下文补全
设计原则: 准确地展示数据,节省笔墨,节省空间,消除不必要的无价值图形,在最短的时间内传达最多的信息
最大化Data-ink Ratio
视觉感知,认知过程,相对判断和视觉假象
格式塔学派:整体决定部分的性质,部分依从于整体
- 就近原则 Proximity
- 相似原则 Similarity
- 连续性原则 Continuation
- 闭合原则 Closure
- 共势原则 Common movement
- 对称性原则 Symmetry
- 图形与背景关系原则 Figure-ground
视觉编码:将数据信息映射成可视化元素
- 可视化符号
- 视觉通道:数量通道,标识通道
视觉编码的优先级
可视化工具
- D3.js
- Vega 声明式语言
- G2
- ECharts
二、3D游戏
3D实体搭建;相机,光照,天空盒;控制与碰撞;玩法逻辑与UI
1.3D实体搭建
3D实体的位姿态Transform:Position,Rotation,Scale 都是三维向量坐标,先缩放,后旋转,最后平移
创建:加载3D模型;组合参数化的基本几何体
绘制:材质、颜色、纹理
预制体prefab:游戏对象保存在工程中,在需要的时候创建出来;存储一个游戏对象,包括游戏对象的所有组件以及其下的所有子游戏对象
2.相机,光照,天空盒
相机:Clear Flag,背景颜色,Culling Mask,投影(透视,正交)
光照:类型:点光源、平行光、聚光灯、面积光;颜色;强度;阴影类型
天空盒:相机的清除标志设为“天空盒”,窗口-渲染-照明设置,环境-天空盒材质
3.控制与碰撞
例:飞船的控制逻辑:
1.添加刚体组件
Add Component > Physics > Rigidbody
Use Gravity 忽略重力的影响 false
isKinematic飞船通过脚本而非力影响运动属性 true
Constraints 冻结Z轴位移以及X、Y、Z轴旋转
2.添加自定义脚本
Add Component > New Script
基类MonoBehavior
Input.GetAxis()和InputManager
是Unity设置输入响应方式的管理列表,它的位置在Edit > Project Setting > Input中
例:添加敌机刚体,敌机攻击脚本
设置标签、图层和物理规则
标签和图层管理器:Edit > Project Settings > Physics命令
碰撞盒,球体计算最简单
添加碰撞代码Collider组件与OnTriggerEnter函数,不会改变主角运动轨迹
4.玩法逻辑与UI
主角飞船增加射击功能,子弹添加碰撞事件,超出屏幕范围的自动销毁,屏幕右上角显示记分板TMpro
重新开始游戏LoadScene