可视化&3D游戏 | 青训营笔记

132 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第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