UNPKG

@realsee/five

Version:

Realsee Renderer SDK

80 lines (75 loc) • 15.8 kB
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>release_notes/6.6 | 如视 Five SDK</title><meta name="description" content="Documentation for 如视 Five SDK"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">如视 Five SDK</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">release_notes/6.6</a></li></ul></div><div class="tsd-panel tsd-typography"><h1 id="release-note-66x" class="tsd-anchor-link">Release Note 6.6.x<a href="#release-note-66x" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h1> <blockquote> <p>6.6.x 版本发布日志</p> </blockquote> <pre><code class="shell"><span class="hl-5">npm</span><span class="hl-1"> </span><span class="hl-9">install</span><span class="hl-1"> </span><span class="hl-9">@realsee/five@6.6</span> </code><button type="button">Copy</button></pre> <h2 id="依赖升级" class="tsd-anchor-link">依赖升级<a href="#依赖升级" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2> <blockquote> <p>6.6.0 版本对开发环境依赖进行了较大幅度的升级,以支持更新的特性和更好的开发体验。</p> </blockquote> <ul> <li><strong>Node.js</strong>: 升级至 v20。</li> <li><strong>TypeScript</strong>: 升级至 v5.9.2 (tslib -&gt; 2.8.1)。</li> <li><strong>Vite</strong>: 升级至 v7.1.2。</li> <li><strong>Protobufjs</strong>: 升级至 v7.5.3。</li> </ul> <h2 id="核心性能优化" class="tsd-anchor-link">核心性能优化<a href="#核心性能优化" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2> <h3 id="内存泄漏修复" class="tsd-anchor-link">内存泄漏修复<a href="#内存泄漏修复" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3> <p>针对大模型加载和销毁过程中的内存占用进行了多轮优化:</p> <ul> <li><strong>实例销毁</strong>: 修复了 <code>five.dispose()</code> 时,部分 WebGL 资源(纹理、几何体)及事件监听器未被完全释放的问题。</li> <li><strong>加载过程</strong>: 优化了模型下载和解析过程中临时对象的生命周期管理,解决了材质解析可能导致的内存驻留。</li> <li><strong>瓦片加载</strong>: 修复了全景图瓦片在特定网络环境下取消请求时可能导致的内存泄漏。</li> </ul> <h3 id="射线检测-raycaster-性能提升" class="tsd-anchor-link">射线检测 (Raycaster) 性能提升<a href="#射线检测-raycaster-性能提升" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3> <p>优化了 BVH (Bounding Volume Hierarchy) 射线碰撞检测逻辑,引入了“首个命中即停止”的机制,显著提升了点击交互性能。</p> <ul> <li><strong>firstHitOnly</strong>: 在 <code>THREE.Raycaster</code> 上扩展了 <code>firstHitOnly</code> 属性。当设置为 <code>true</code> 时,BVH 遍历算法会在找到第一个满足条件的交点后,利用该交点的距离对后续搜索进行剪枝(Pruning),避免遍历所有可能的交点。这对于点击拾取(Picking)操作有极大的性能提升。</li> </ul> <pre><code class="typescript"><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">raycaster</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-4">THREE</span><span class="hl-1">.</span><span class="hl-5">Raycaster</span><span class="hl-1">();</span><br/><span class="hl-8">// 开启首个命中优化</span><br/><span class="hl-6">raycaster</span><span class="hl-1">.</span><span class="hl-6">firstHitOnly</span><span class="hl-1"> = </span><span class="hl-3">true</span><span class="hl-1">;</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">intersects</span><span class="hl-1"> = </span><span class="hl-6">five</span><span class="hl-1">.</span><span class="hl-6">model</span><span class="hl-1">.</span><span class="hl-5">intersectRaycaster</span><span class="hl-1">(</span><span class="hl-6">raycaster</span><span class="hl-1">);</span> </code><button type="button">Copy</button></pre> <ul> <li><strong>floorIndex</strong>: 支持在射线检测时通过 filter 机制快速筛选楼层(需配合上层逻辑)。</li> </ul> <h3 id="work-数据结构优化" class="tsd-anchor-link">Work 数据结构优化<a href="#work-数据结构优化" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3> <ul> <li><strong>静态化存储</strong>: 重构了 <code>Work</code> 数据解析逻辑 (<code>workParser</code>)。使用 <code>Object.defineProperty</code> 和 <code>Object.freeze</code> 将解析后的 Work 数据及其子对象(如 <code>Observer</code>, <code>Model</code>)定义为不可变对象。这有助于 V8 引擎进行 Hidden Class 优化,减少内存占用并提升属性访问速度。</li> <li><strong>解析优化</strong>: 增强了 <code>work.parse</code> 的容错能力,优化了对异常数据的处理逻辑。</li> <li><strong>字段补充</strong>: <code>work.observers</code> 中补充了 <code>panoId</code> 字段,修复了 <code>derivedIdStr</code> 的生成逻辑。</li> </ul> <h2 id="新增特性" class="tsd-anchor-link">新增特性<a href="#新增特性" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2> <h3 id="imagebitmap-支持" class="tsd-anchor-link">ImageBitmap 支持<a href="#imagebitmap-支持" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3> <p>支持使用浏览器原生的 <code>ImageBitmap</code> API 替代传统的 <code>HTMLImageElement</code> 进行纹理加载。<code>ImageBitmap</code> 的解码过程可以在后台线程进行,避免了解码大图时阻塞主线程导致的掉帧现象。</p> <pre><code class="typescript"><span class="hl-10">import</span><span class="hl-1"> { </span><span class="hl-6">Five</span><span class="hl-1"> } </span><span class="hl-10">from</span><span class="hl-1"> </span><span class="hl-9">&quot;@realsee/five&quot;</span><span class="hl-1">;</span><br/><br/><span class="hl-8">// 开启 Native ImageBitmap 支持 (全局配置)</span><br/><span class="hl-6">Five</span><span class="hl-1">.</span><span class="hl-6">useNativeImageBitmap</span><span class="hl-1"> = </span><span class="hl-3">true</span><span class="hl-1">;</span><br/><br/><span class="hl-8">// 之后创建的 Five 实例将自动应用此配置</span><br/><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">five</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-5">Five</span><span class="hl-1">({ ... });</span> </code><button type="button">Copy</button></pre> <h3 id="图片-exif-旋转支持" class="tsd-anchor-link">图片 Exif 旋转支持<a href="#图片-exif-旋转支持" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3> <p><code>imageOptions</code> 新增 <code>forceUseExifOrientation</code> 参数。针对部分未在服务端处理旋转的图片,该参数可强制读取并应用图片 Exif 中的 Orientation 信息,确保渲染方向正确。</p> <pre><code class="typescript"><span class="hl-3">const</span><span class="hl-1"> </span><span class="hl-4">five</span><span class="hl-1"> = </span><span class="hl-3">new</span><span class="hl-1"> </span><span class="hl-5">Five</span><span class="hl-1">({</span><br/><span class="hl-1"> </span><span class="hl-6">imageOptions:</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-6">forceUseExifOrientation:</span><span class="hl-1"> </span><span class="hl-3">true</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">});</span> </code><button type="button">Copy</button></pre> <h3 id="航拍全景图优化" class="tsd-anchor-link">航拍全景图优化<a href="#航拍全景图优化" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3> <p>优化了航拍全景图(Aerial Panorama)的交互体验,改进了视角限制和过渡效果,使其浏览更加自然顺畅。</p> <h2 id="修复与改进" class="tsd-anchor-link">修复与改进<a href="#修复与改进" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h2> <h3 id="兼容性修复" class="tsd-anchor-link">兼容性修复<a href="#兼容性修复" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3> <ul> <li><strong>Safari</strong>: <ul> <li>修复了 BVH 碰撞检测在 Safari 下可能出现的精度不一致问题。</li> <li>禁用 Safari 下的 <code>image.decode</code> 调用,修复了由此导致的 WebGL <code>updateTexture</code> 失败问题。</li> </ul> </li> <li><strong>微信</strong>: 修复了点云(PointCloud)在微信查看器中因 Shader 兼容性问题导致的显示错误。</li> <li><strong>High-DPI</strong>: 修复了当屏幕分辨率导致计算出的瓦片尺寸超过 WebGL 材质尺寸上限(<code>MAX_TEXTURE_SIZE</code>)时,瓦片渲染黑屏的问题。</li> </ul> <h3 id="逻辑修复" class="tsd-anchor-link">逻辑修复<a href="#逻辑修复" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3> <ul> <li><strong>moveToPano</strong>: 修复了当目标点位即为当前点位时,<code>moveToPano</code> 命令可能被忽略的问题。</li> <li><strong>交互逻辑</strong>: <ul> <li>修复了 <code>panorama</code> 模式下点击走点可能出现回退的问题。</li> <li>修复了 <code>model</code> 模式下 <code>onTapGesture</code> 回调中获取的 raycaster 状态不正确的问题。</li> </ul> </li> <li><strong>渲染显示</strong>: 修复了全景图瓦片在正交相机(OrthographicCamera)下的显示错误。</li> </ul> </div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#release-note-66x"><span>Release <wbr/>Note 6.6.x</span></a><ul><li><a href="#依赖升级"><span>依赖升级</span></a></li><li><a href="#核心性能优化"><span>核心性能优化</span></a></li><li><ul><li><a href="#内存泄漏修复"><span>内存泄漏修复</span></a></li><li><a href="#射线检测-raycaster-性能提升"><span>射线检测 (<wbr/>Raycaster) 性能提升</span></a></li><li><a href="#work-数据结构优化"><span>Work 数据结构优化</span></a></li></ul></li><li><a href="#新增特性"><span>新增特性</span></a></li><li><ul><li><a href="#imagebitmap-支持"><span>Image<wbr/>Bitmap 支持</span></a></li><li><a href="#图片-exif-旋转支持"><span>图片 <wbr/>Exif 旋转支持</span></a></li><li><a href="#航拍全景图优化"><span>航拍全景图优化</span></a></li></ul></li><li><a href="#修复与改进"><span>修复与改进</span></a></li><li><ul><li><a href="#兼容性修复"><span>兼容性修复</span></a></li><li><a href="#逻辑修复"><span>逻辑修复</span></a></li></ul></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../modules.html">如视 Five SDK</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>