提交 b2e251e1 编写于 作者: D Don McCurdy

MeshPhysicalMaterial: Update examples and docs for .transmission

上级 13dd7550
......@@ -24,7 +24,7 @@
</li>
<li>
<b>Physically-based transparency:</b> One limitation of [page:Material.opacity .opacity] is
that highly transparent materials are less reflective. Physically-based [page:.transparency]
that highly transparent materials are less reflective. Physically-based [page:.transmission]
provides a more realistic option for thin, transparent surfaces like glass.
</li>
<li>
......@@ -62,7 +62,7 @@
[example:webgl_materials_variations_physical materials / variations / physical]<br />
[example:webgl_materials_physical_clearcoat materials / physical / clearcoat]<br />
[example:webgl_materials_physical_reflectivity materials / physical / reflectivity]<br />
[example:webgl_materials_physical_transparency materials / physical / transparency]
[example:webgl_materials_physical_transmission materials / physical / transmission]
</p>
<h2>Constructor</h2>
......@@ -128,15 +128,21 @@
This models the reflectivity of non-metallic materials. It has no effect when [page:MeshStandardMaterial.metalness metalness] is *1.0*
</p>
<h3>[property:Float transparency]</h3>
<h3>[property:Float transmission]</h3>
<p>
Degree of transparency, from *0.0* to *1.0*. Default is *0.0*.<br />
Degree of transmission (or optical transparency), from *0.0* to *1.0*. Default is *0.0*.<br />
Thin, transparent or semitransparent, plastic or glass materials remain largely reflective even if they are mostly transparent.
Thin, transparent or semitransparent, plastic or glass materials remain largely reflective even if they are fully transmissive.
The transparency property can be used to model these materials.<br />
The transmission property can be used to model these materials.<br />
When transparency is non-zero, [page:Material.opacity opacity] should be set to *1*.
When transmission is non-zero, [page:Material.opacity opacity] should be set to *1*.
</p>
<h3>[property:Texture transmissionMap]</h3>
<p>
The red channel of this texture is multiplied against [page:.transmission], for per-pixel control
over optical transparency. Default is *null*.
</p>
<h2>Methods</h2>
......
......@@ -156,7 +156,7 @@ var files = {
"webgl_materials_physical_clearcoat",
"webgl_materials_physical_reflectivity",
"webgl_materials_physical_sheen",
"webgl_materials_physical_transparency",
"webgl_materials_physical_transmission",
"webgl_materials_shaders_fresnel",
"webgl_materials_standard",
"webgl_materials_subsurface_scattering",
......
<!DOCTYPE html>
<html lang="en">
<head>
<title>threejs webgl - materials - transparency</title>
<title>threejs webgl - materials - transmission</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
<link type="text/css" rel="stylesheet" href="main.css">
......@@ -9,7 +9,7 @@
<body>
<div id="container"></div>
<div id="info"><a href="https://threejs.org" target="_blank" rel="noopener">threejs</a> - Transparency with Premultiplied Alpha (right) and without (left)</div>
<div id="info"><a href="https://threejs.org" target="_blank" rel="noopener">threejs</a> - Transmission with Premultiplied Alpha (right) and without (left)</div>
<script type="module">
......@@ -23,7 +23,7 @@
var params = {
color: 0xffffff,
transparency: 0.90,
transmission: 0.90,
envMapIntensity: 1,
lightIntensity: 1,
exposure: 1
......@@ -96,8 +96,8 @@
envMap: hdrCubeRenderTarget.texture,
envMapIntensity: params.envMapIntensity,
depthWrite: false,
transparency: params.transparency, // use material.transparency for glass materials
opacity: 1, // set material.opacity to 1 when material.transparency is non-zero
transmission: params.transmission, // use material.transmission for glass materials
opacity: 1, // set material.opacity to 1 when material.transmission is non-zero
transparent: true
} );
......@@ -166,11 +166,11 @@
} );
gui.add( params, 'transparency', 0, 1 )
gui.add( params, 'transmission', 0, 1 )
.onChange( function () {
material1.transparency = material2.transparency = params.transparency;
material1b.transparency = material2b.transparency = params.transparency;
material1.transmission = material2.transmission = params.transmission;
material1b.transmission = material2b.transmission = params.transmission;
} );
......
......@@ -8,15 +8,21 @@ import { Color } from './../math/Color';
export interface MeshPhysicalMaterialParameters
extends MeshStandardMaterialParameters {
reflectivity?: number;
clearcoat?: number;
clearcoatMap: Texture | null;
clearcoatRoughness?: number;
clearcoatRoughnessMap: Texture | null;
clearcoatNormalScale?: Vector2;
clearcoatNormalMap?: Texture | null;
reflectivity?: number;
sheen?: Color;
clearcoatNormalScale?: Vector2;
clearcoatNormalMap?: Texture | null;
transparency?: number;
transmission?: number;
transmissionMap?: Texture | null;
}
export class MeshPhysicalMaterial extends MeshStandardMaterial {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册