组件:全息影像 ================== 此组件由[[block:hologram_projector:zh|全息投影仪]]提供。 以下函数可用于创建全息影像,其分辨率为48x32x48,投影范围最大为9x6x9格。2级全息投影仪的分辨率并未提高,但是可以用至多三种颜色显示全息投影(1级全息投影仪只能用一种)。 组件名:`hologram`。 回调函数: - `clear()` 清除全息影像。 \\ - `get(x:number, y:number, z:number):number` 返回全息影像指定坐标处的值。 \\ - `set(x:number, y:number, z:number, value:number or boolean)` 设定全息影像指定坐标处的值。 \\ - `fill(x:number, z:number[, minY:number], maxY:number, value:number)` 用给定值填充指定柱状区域中的一个区间,只会覆写区间内的体素。若省略`minY`则默认为1。作用范围包含区间的两端。 **注意:**在1.3.3版本前并没有`minY`参数,指定高度处及其下方的所有体素都将被赋值,指定高度上方的所有体素都不会被赋值。 \\ - `copy(x:number, z:number, sx:number, sz:number, tx:number, tz:number)` 遵从给定的位置变换,复制一个柱状区域。 \\ - `getScale():number` 返回当前全息影像的渲染缩放比例。 \\ - `setScale(value:number)` 设定渲染缩放比例。缩放比例越大则耗能越多。做小缩放比例为0.33,此时全息投影的大小在一个方块以内。最大缩放比例为3,此时全息投影会占据9x6x9格的空间。 \\ - `getTranslation:number, number, number` 返回当前的位置变换偏移量。 \\ - `setTranslation(x:number, y:number, z:number)` 设定位置变换向量。全息投影显示时将会从默认位置以此向量为偏移值进行偏移。最大允许偏移值与投影仪等级有关。偏移值的单位为全息投影的尺寸,因此位置改变的距离远近也会随着缩放比例而增减。 \\ - `maxDepth():number` 全息影像支持的色深。 \\ - `getPaletteColor(index:number):number` 获取定义给指定值的16进制颜色。 \\ - `setPaletteColor(index:number, value:number):number` 设置定义给指定值的16进制颜色。\\ 下面是一个简单的程序样例,可用于设定不同体素的值: ```lua local component = require("component") local hologram = component.hologram local args = {...} hologram.set(tonumber(args[1]), tonumber(args[2]), tonumber(args[3]), args[4] == "true" or args[4] == "on") ``` 使用例(假设上述程序被保存为`holo-set.lua`): `# holo-set 16 8 20 true` 高级样例: - [Holo Flow](https://github.com/OpenPrograms/Sangar-Programs/blob/master/holo-flow.lua) 此程序生成了一张高度图,并在上面“移动”。制造了滚动的大地的效果。 - [Holo Text](https://github.com/OpenPrograms/Sangar-Programs/blob/master/holo-text.lua) 此程序生成了一张随机的高度图,并在其上方显示了滚动的文本。 请注意,第二个样例要比第一个高级的多。 **重要事项:**两个脚本都需要同一个文件夹中有[noise.lua](https://github.com/OpenPrograms/Sangar-Programs/blob/master/noise.lua)脚本才能工作。 目录 ---- {{page>component:contents:zh&noheader&noeditbutton&nouser&nofooter}}