UNPKG

@realsee/five

Version:

Realsee Renderer SDK

160 lines (121 loc) • 7.91 kB
# Material Parameters (材质参数) - **Summary**: 配置 3D 模型与全景图过渡的视觉表现、渲染样式及特效。 - **Schema**: 对应 `ParameterMaterialValue` 接口,定义了材质、点云、楼层等外观属性。 - **Concepts**: Transparency (透明度), Point Cloud (点云), Floor Style (楼层样式), PBR (物理渲染)。 - **Configuration**: 包含透明度、混合模式、点云大小/形状、阴影设置等详细参数。 - **Examples**: 模型透明度调整、点云样式定制。 ## Schema > **Definition**: [ParameterMaterialValue](../../five/model/parameter.d.ts) 以下是 `ParameterMaterialValue` 的 TypeScript 定义摘要: ```typescript export interface ParameterMaterialValue { /** 模型整体透明度 [0, 1] */ opacity: number; /** 点云基础缩放比例 */ pointScale: number; /** 点云大小绘制方式 ('ATTENUATION' | 'FIXED') */ pointSize: PBMPointSize; /** 楼层显示样式 ('OPACITY' | 'VISIBILITY') */ floorStyle: PBMFloorStyle; // ... 更多字段见下方配置表 } ``` ## Concepts ### 1. Transparency & Blending (透明度与混合) 材质系统提供了两种维度的透明度控制: * **Opacity (`opacity`)**: 控制模型整体的不透明度 (0-1)。 * **Model Alpha (`modelAlpha`)**: 控制纹理混合的权重。 * `0`: 仅显示模型自带的 UV 纹理(通常是颜色单一的白模或人工烘焙的纹理)。 * `1`: 仅显示从全景图投影到模型上的纹理(真实感强,但可能存在投影误差)。 * `0.5`: 两者混合。 ### 2. Point Cloud Rendering (点云渲染) Five 支持高性能的点云渲染(PBM),并提供灵活的样式配置: * **Size Attenuation**: 通过 `pointSize: 'ATTENUATION'` 开启近大远小的透视效果,增强空间感。 * **Pixel Limits**: 通过 `pointMinPixel` 和 `pointMaxPixel` 限制点在屏幕上的最小/最大像素尺寸,防止远处点消失或近处点过大遮挡视线。 ### 3. Floor Management (楼层管理) 对于多楼层场景,可以通过参数控制楼层的显示策略: * **Floor Style (`floorStyle`)**: 控制非当前楼层的显示方式(如 `OPACITY` 半透明、`VISIBILITY` 隐藏等)。 * **Shown Floor (`shownFloorIndex`)**: 指定当前高亮显示的楼层索引。 ### 4. Vertex Marks & Semantic Filtering (顶点标记与语义过滤) `vertexMarks` 是一个**全局开关**,用于控制是否启用模型顶点上的语义标记(`_feature_id_rsmask`)逻辑。 * **机制**: 模型顶点预置了 `_feature_id_rsmask` 属性,不同的值代表不同的语义部分。 * **当前支持**: 目前主要支持 `_feature_id_rsmask=1`(通常标记为天花板/房顶)。 * 当 `vertexMarks` 开启时,标记为 `1` 的顶点部分会在特定视角(如俯视)下自动隐藏,实现“开盖”效果,优化室内布局观测体验。 * **未来扩展**: 该机制设计支持更多标记值,未来可能用于控制其他特定模型部件的显示效果。 ## Configuration 以下表格列出了控制材质与外观的可用参数,按使用频率和场景分类。 ### Common Configuration (常用配置) | Parameter | Type | Default | Description | | :--- | :--- | :--- | :--- | | `opacity` | `number` | `1.0` | 模型整体透明度 [0, 1]。0 为完全透明,1 为完全不透明。 | | `pointScale` | `number` | `0.02` | 点的基础缩放比例(控制点的大小)。 | | `pointSize` | `PBMPointSize` | `'ATTENUATION'` | 点云大小绘制方式。<br>`'ATTENUATION'`: 随距离衰减(近大远小);<br>`'FIXED'`: 固定像素大小。 | | `pointShape` | `PBMPointShape` | `'CIRCLE'` | 点云形状。<br>`'CIRCLE'`: 圆形;<br>`'SQUARE'`:方形。 | | `pointBack` | `PBMPointBack` | `'DARK'` | 点云背面绘制方式。 | | `pointMinPixel` | `number` | `0` | 点云最小像素尺寸。 | | `pointMaxPixel` | `number` | `40` | 点云最大像素尺寸。 | | `pointAppearAnimation` | `boolean` | `true` | 是否开启点云出现动画。 | | `vertexMarks` | `boolean` | `true` | 是否显示/生效标注。 | | `brightness` | `number` | `1.0` | 场景亮度倍数。 | | `floorStyle` | `PBMFloorStyle` | `'OPACITY'` | 楼层显示样式。 | | `shownFloorIndex` | `number` | `-1` | 当前显示的楼层索引。`-1` 表示显示所有楼层。 | | `castShadow` | `boolean` | `false` | 模型是否产生阴影。 | | `receiveShadow` | `boolean` | `false` | 模型是否接收阴影。 | | `useAddBlend` | `boolean` | `false` | 是否使用半透明叠加渲染。 | | `customShaders` | `PBMCustomShader[]` | `[]` | 自定义 Shader 配置。 | | `panoFilter` | `PBMPanoFilter` | `null` | 全景图滤镜 (亮度、对比度、色温等)。详情见 [Pano Filter](./pano-filter.md)。 | | `clippers` | `PBMClipperParameter[]` | `[]` | 模型裁切参数。 | | `boundingBox` | `THREE.Box3` | `Infinity` | 模型包围盒。 | ### Advanced Appearance (进阶外观配置) > 这些参数较少使用,仅在需要精细调整特殊视觉效果时修改。 | Parameter | Type | Default | Description | | :--- | :--- | :--- | :--- | | `colorSaturation` | `number` | `0.0` | 饱和度调整值。 | | `colorBrightness` | `number` | `0.0` | 亮度调整值(与 `brightness` 叠加)。 | | `colorStyle` | `PBMColorStyle` | `'RGB'` | 颜色显示样式。 | | `constantColor` | `THREE.Vector3` | `(0.6, 0.6, 0.6)` | 模型纯色模式下的颜色值。 | | `outlineGain` | `number` | `0.0` | 轮廓线增益。 | | `distanceGain` | `number` | `0.0` | 距离增益。 | | `gaussianSplattingSHDegree` | `number` | `0` | 3D Gaussian Splatting 的球谐阶数。 | ### Internal & Low-Level (内部与底层配置) > **注意**: 以下参数主要用于引擎内部状态同步或特定底层逻辑,**不建议开发者手动修改**,以免引起渲染异常。 | Parameter | Type | Default | Description | | :--- | :--- | :--- | :--- | | `modelAlpha` | `number` | `1.0` | 模型纹理混合系数。通常由 Five 内部模式切换控制。 | | `useHQWeight` | `boolean` | `false` | 是否使用高质量权重计算(影响渲染质量)。 | | `useHQDepth` | `boolean` | `false` | 是否使用高质量深度遮罩。 | | `progress` | `number` | `0` | 全景图混合进度。 | | `transition` | `PBMTransition` | `'FADE'` | 全景图过渡混合模式。 | | `gradientTexture` | `THREE.Texture` | `default` | 高程着色材质纹理。 | | `pano0` | `PBMPanoPicture` | `null` | 起始点全景图信息。 | | `pano1` | `PBMPanoPicture` | `null` | 结束点全景图信息。 | | `pano0Depth` | `PBMPanoDepth` | `null` | 起始点深度信息。 | | `pano1Depth` | `PBMPanoDepth` | `null` | 结束点深度信息。 | | `refinedScreen` | `PBMRefinedScreen` | `null` | 细化瓦片的屏幕渲染配置。 | ## Examples ### 1. Adjusting Model Transparency and Style (调整模型透明度与样式) ```typescript // 设置半透明 five.modelScene.parameter.set('opacity', 0.5); // 仅显示原始 UV 贴图 five.modelScene.parameter.set('modelAlpha', 0.0); // 设置楼层样式 five.modelScene.parameter.set('floorStyle', 'wireframe'); ``` ### 2. Configuring Point Cloud Appearance (配置点云外观) ```typescript // 大小随距离衰减 five.modelScene.parameter.set('pointSize', 'ATTENUATION'); // 基础大小 five.modelScene.parameter.set('pointScale', 0.05); // 最大像素限制 five.modelScene.parameter.set('pointMaxPixel', 20); ``` ## Related * [Parameter](./parameter.md): 配置系统入口与继承逻辑。 * [Pano Filter](./pano-filter.md): 了解全景图滤镜的详细用法。 * [3DTile Params](./3dtile.md): 性能与加载相关参数。 --- ```yaml tags: [材质, 透明度, 点云, 楼层, 阴影, 亮度, 天花板, 开盖, 顶点标记, 渲染样式, material, appearance, pointcloud, parameter, roof, ceiling, config, opacity] ```