@realsee/five
Version:
Realsee Renderer SDK
160 lines (121 loc) • 7.91 kB
Markdown
# 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]
```