Five 初始化配置使用说明
信息
在初始化 five 实例时,可以配置的参数项具体可参考 FiveInitArgs ,以下几个配置项将直接影响到 VR 体验,我们在此为您详细说明。
imageOptions
imageOptions
是全景图的配置参数,Five 渲染引擎将根据此参数对 work 数据中的全景图片在 runtime 时动态调整 url, 以达到平衡加载时间和图片质量的目的,配置示例:
const five = new Five({
imageOptions: {
size: 1024, // 表示全景图加载 1024x1024 的图片
quality: 70, // 表示图片质量压缩到 70%
},
})
全景瓦片模式
为了优化用户在三维空间中漫游的体验,我们引入了瓦片模式。瓦片模式是指在全景图的基础上,将全景图切割成多个小图片,然后根据用户的视角动态加载对应的小图片,以达到平衡加载时间和图片质量的目的。
目前我们已经支持了三级瓦片模式,支持分辨率为 1024x1024(1 级瓦片), 2048x2048(2 级瓦片) 、4096x4096 (3 级瓦片)、8192x8192 (4 级瓦片) 的全景图。瓦片依赖的原始高清全景图依赖拍摄数据和拍摄设备的不同,分辨率也不同。目前使用我们默认会使用 2048x2048 的全景图,即至少 2 级瓦片。
瓦片数据的解析已经内置在引擎中,您只需要在初始化时配置好对应的参数即可。
const five = new Five({
imageOptions: {
size: 512, // 当初始值为512,且work数据中有瓦片数据时,会自动使用瓦片模式
},
})
提示
动态瓦片使用了图床动态裁剪功能,因此需要配置图床服务,我们内置了腾讯云数据万象,您也可以使用其他对象存储服务。
阿里云图床服务配置示例
export const imageOptions = {
format: 'jpg', // 格式 可选 "jpg" | "png" | "heif" | "webp" | "avif"
quality: 100, // 图片质量参数(0-100)
size: 2048, // 图片尺寸参数 尽量使用 2 的幂次 如 512 1024 2048,瓦片使用512
transform: (
source: string,
options: {
size?: number
quality?: number
format?: 'jpg' | 'png' | 'heif' | 'webp' | 'avif'
cut?: [number, number, number, number]
sharpen?: number
},
) => {
let base = source.split('?')[0]
let ext = base.split('.').pop()
if (ext === 'jpeg') ext = 'jpg'
if (ext !== 'png' && ext !== 'jpg') return source
let suffix: string = ''
const params: string[] = ['x-oss-process=image']
const { format, quality, size } = options
// 图片缩放
// https://help.aliyun.com/document_detail/44688.htm?spm=a2c4g.11186623.0.0.ea05890eIlPbUs#concept-hxj-c4n-vdb
if (size && size !== 2048) {
params.push(`resize,w_${size}`)
}
// 自定义裁剪
// https://help.aliyun.com/document_detail/44693.html
if (options.cut !== undefined) {
const [x, y, width, height] = options.cut
params.push(`crop,x_${x},y_${y},w_${width},h_${height},g_nw`)
}
// 图片处理包含缩放操作时,建议将格式转换参数放到处理参数的最后。
// https://help.aliyun.com/document_detail/44703.htm?spm=a2c4g.11186623.0.0.ea0532458MXRu0#concept-mf3-md5-vdb
if (format !== undefined && format !== ext) {
params.push(`format,${format}`)
}
// 图片质量
// 质量变换仅支持JPG和WebP,其他图片格式不支持。
// https://help.aliyun.com/document_detail/44705.htm?spm=a2c4g.11186623.0.0.ea053245KXAlE2#concept-exc-qp5-vdb
if (quality !== undefined && quality !== 100) {
const format = options.format ?? ext
if (format && ['jpg', 'webp'].indexOf(format) >= 0) {
params.push(`quality,Q_${quality}`)
}
}
// 锐化
// https://help.aliyun.com/document_detail/44700.html
if (options.sharpen !== undefined) {
params.push(`sharpen,${options.sharpen}`)
}
// 拼接参数
if (params.length) {
suffix = '?' + params.join('/')
}
return base + suffix
},
}
如视推荐配置示例
我们通常可以使用以下配置作为基准,然后根据不同的条件来适当调整
const defaultInitArgs = {
backgroundAlpha: 0,
initWithTransition: false,
floorplan: {
minLatitude: 0,
maxLatitude: Math.PI / 2,
defaultFov: 95,
},
panorama: {
minLatitude: -Math.PI / 4,
maxLatitude: Math.PI / 4,
defaultFov: 95,
},
imageOptions: {
size: 512,
},
onlyRenderIfNeeds: true, // 默认值为 true。 大多情况下,都是应该开启按需渲染
initialBasisLoader: false, // 默认值为 false。 大多数情况并不使用 basis, 不多加载资源
// five 插件
plugins: pluginsArray, // 按需配置
}
if (如果支持瓦片) {
defaultInitArgs.imageOptions.size = 512
}
if (需要展示高清模型) {
defaultInitArgs.textureOptions.size = null
defaultInitArgs.textureOptions.autoResize = false
}