展示
这里是对展示器的具体配置,包括窗口状态,以及一些针对具体模型类型的配置。
展示器的配置项将实时保存至数据库。
TIP
展示器配置将在每次打开展示器时读取,因此需要重载展示器才能应用配置项。
TIP
在针对模型的配置项中,可以发现不同的模型有一些相同的配置项目,本来它们是可以合并到一起的,但是实际测试中发现不同种类的模型较为适用的参数值存在较大差异。例如 Spine 模型大多是 Q 版人物,载入时和 Live2D 使用相同的大小的话会显得太大了。因此它们拆分成独立设置的了。
部分配置项解释
显示
像素比:
它告诉 canvas 应使用多少屏幕实际像素来绘制单个 CSS 像素。参见Mozilla 对 devicePixelRatio 的介绍。对于分辨率较高的屏幕,设定为 Retina 以获得最佳的显示效果,相应的性能消耗也会比 Normal 更大,设定为 System 将会自动检测系统默认的比例。
WARNING
测试发现,在该参数设定为 Normal 时,发现 Live2D 切换到其他模型时会出现窗口短暂变成全白的现象,还没有进行细致研究。
显示 FPS:
即显示帧率,帧率将显示在展示器的右上角,在载入模型后将显示渲染帧率。
TIP
下方点击穿透的配置是通过监视模型渲染 canvas 的像素实现的,帧率显示内容不在该 canvas 内,因此点击帧率显示区域时,点击事件将始终穿透到展示器下方。
透明展示器
点击穿透:
展示器的本质是一个占满全屏的透明窗口,该配置项指的是鼠标指针的点击穿透状态,为不影响窗口后方的应用使用,鼠标的点击事件将被穿透至窗口后方,而鼠标的移动事件将会被监听。
设定为所有区域时,无论处于屏幕的什么位置,鼠标的点击事件都将传递到展示器窗口的后方,这意味着 3D 模型的相机轨道控制将会失效,2D 模型的拖拽移动也会失效,取而代之的,展示器后方软件中点击事件将被触发。
TIP
鼠标的移动事件监听不受该配置项影响,这意味着所有模型的视线跟踪鼠标不会受到影响。
设定为透明区域时,渲染画布的非透明部分将不会发生穿透,点击事件将被传入展示器。
显示范围:
这是一个仅针对于 macOS 的设定(指 Windows 用户就不用管了)。设定为单桌面时,透明展示器仅仅会在当前桌面显示;设定为所有桌面时会在多个桌面显示,这都没什么问题,然而……
WARNING
将显示范围设定为所有工作区时,可以使展示器在所有窗口上显示,全屏应用也不例外。但目前已证实这个操作会带来一些奇妙的问题,例如菜单栏无法正确显示,程序的运行图标将会消失。
还有,如果初次启动应用时,不是默认启动展示器,而是通过控制面板打开显示范围设定为所有工作区的窗口时,展示器无法覆盖在全屏应用之上,仅会在所有桌面上显示,但重载展示器后,这个问题将会消失。
这个问题好像跟内部的进程转换有关,出现这些状况是难以解决的。
窗口置顶:
开启后在同一个桌面内,展示器将始终停留在其他窗口的最顶层。关闭时,当展示器失去焦点后将会被移动到其他窗口的后方,包括鼠标移动在内的事件监听都将失效。
WARNING
打开窗口置顶有一定的风险,如果遇到一个什么占满全屏的模型,或者软件出现什么故障时,可能导致展示器窗口遮盖整个桌面,引发一些麻烦。
Live2D 渲染&Spine 渲染
宽度范围与高度范围
这两个配置项可能有点难以理解,控制模型初始的显示位置。
这里采用的是笛卡尔坐标系,以屏幕左上角为原点,下方为 y 轴正方向,右方为 x 轴正方向建立直角坐标系,这和 Mozilla 对 transform-function 中2D 图形坐标系的介绍保持一致。
这里以百分比的方式指定 x 和 y 的范围,以确定一个屏幕上的矩形区域,模型将缩放以尽可能的占满这个区域,但不会超出这个区域,当存在空余空间时,模型将贴靠在该矩形区域的左上角。
Alpha 预乘(Spine 配置项):
这是对 Spine 模型贴图的一个预处理,这个需要根据实际情况手动设定,一些模型需要预乘才能正常显示,如プロジェクトセカイ カラフルステージ! feat. 初音ミク,アークナイツ的游戏模型,另一些模型预乘后显示效果会出现问题,例如アズールレーン。
MMD 渲染&VRoid 渲染
轮廓线效果:
顾名思义,就是在渲染时给模型的边缘加上轮廓线。
TIP
使用 VRoid 模型时,由于没有进行专门的适配,轮廓线只能是个黑线,感觉不是很好看,但这并不是 bug。
相机轨道控制:
这里直接使用了来自于 Three.js 的轨道控制器(OrbitControls),可以通过鼠标控制方便的控制相机移动,鼠标按住左键拖动是旋转视角,下滑动是前后推动相机,按住右键或按住 ⌘ 键(Windows 下为 Ctrl)拖动可以平行移动视角。