6.6.x 版本发布日志
npm install @realsee/five@6.6
6.6.0 版本对开发环境依赖进行了较大幅度的升级,以支持更新的特性和更好的开发体验。
针对大模型加载和销毁过程中的内存占用进行了多轮优化:
five.dispose() 时,部分 WebGL 资源(纹理、几何体)及事件监听器未被完全释放的问题。优化了 BVH (Bounding Volume Hierarchy) 射线碰撞检测逻辑,引入了“首个命中即停止”的机制,显著提升了点击交互性能。
THREE.Raycaster 上扩展了 firstHitOnly 属性。当设置为 true 时,BVH 遍历算法会在找到第一个满足条件的交点后,利用该交点的距离对后续搜索进行剪枝(Pruning),避免遍历所有可能的交点。这对于点击拾取(Picking)操作有极大的性能提升。const raycaster = new THREE.Raycaster();
// 开启首个命中优化
raycaster.firstHitOnly = true;
const intersects = five.model.intersectRaycaster(raycaster);
Work 数据解析逻辑 (workParser)。使用 Object.defineProperty 和 Object.freeze 将解析后的 Work 数据及其子对象(如 Observer, Model)定义为不可变对象。这有助于 V8 引擎进行 Hidden Class 优化,减少内存占用并提升属性访问速度。work.parse 的容错能力,优化了对异常数据的处理逻辑。work.observers 中补充了 panoId 字段,修复了 derivedIdStr 的生成逻辑。支持使用浏览器原生的 ImageBitmap API 替代传统的 HTMLImageElement 进行纹理加载。ImageBitmap 的解码过程可以在后台线程进行,避免了解码大图时阻塞主线程导致的掉帧现象。
import { Five } from "@realsee/five";
// 开启 Native ImageBitmap 支持 (全局配置)
Five.useNativeImageBitmap = true;
// 之后创建的 Five 实例将自动应用此配置
const five = new Five({ ... });
imageOptions 新增 forceUseExifOrientation 参数。针对部分未在服务端处理旋转的图片,该参数可强制读取并应用图片 Exif 中的 Orientation 信息,确保渲染方向正确。
const five = new Five({
imageOptions: {
forceUseExifOrientation: true
}
});
优化了航拍全景图(Aerial Panorama)的交互体验,改进了视角限制和过渡效果,使其浏览更加自然顺畅。
image.decode 调用,修复了由此导致的 WebGL updateTexture 失败问题。MAX_TEXTURE_SIZE)时,瓦片渲染黑屏的问题。moveToPano 命令可能被忽略的问题。panorama 模式下点击走点可能出现回退的问题。model 模式下 onTapGesture 回调中获取的 raycaster 状态不正确的问题。