You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

173 lines
5.6 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body>
[page:Object3D] &rarr; [page:Light] &rarr;
<h1>聚光灯([name]</h1>
<p class="desc">
光线从一个点沿一个方向射出,随着光线照射的变远,光线圆锥体的尺寸也逐渐增大。<br /><br />
该光源可以投射阴影 - 跳转至 [page:SpotLightShadow] 查看更多细节。
</p>
<h2>代码示例</h2>
<code>
// 白色聚光灯从侧面照射,经过纹理调节,形成阴影
const spotLight = new THREE.SpotLight( 0xffffff );
spotLight.position.set( 100, 1000, 100 );
spotLight.map = new THREE.TextureLoader().load( url );
spotLight.castShadow = true;
spotLight.shadow.mapSize.width = 1024;
spotLight.shadow.mapSize.height = 1024;
spotLight.shadow.camera.near = 500;
spotLight.shadow.camera.far = 4000;
spotLight.shadow.camera.fov = 30;
scene.add( spotLight );
</code>
<h2>例子</h2>
<p>
[example:webgl_lights_spotlight lights / spotlight ]<br />
[example:webgl_lights_spotlights lights / spotlights ]
</p>
<h2>构造器Constructor</h2>
<h3>[name]( [param:Color color], [param:Float intensity], [param:Float distance], [param:Radians angle], [param:Float penumbra], [param:Float decay] )</h3>
<p>
[page:Color color] -(可选)一个表示颜色的 Color 的实例、字符串或数字默认为一个白色0xffffff的 [page:Color Color] 对象。<br />
[page:Float intensity] -(可选)光照强度。默认值为 1。<br />
[page:Float distance] - 光源照射的最大距离。默认值为 0无限远<br />
[page:Radians angle] - 光线照射范围的角度。默认值为 Math.PI/3。<br />
[page:Float penumbra] - 聚光锥的半影衰减百分比。默认值为 0。<br />
[page:Float decay] - 沿着光照距离的衰减量。默认值为 2。<br /><br />
创建一个新的聚光灯。
</p>
<h2>属性Properties</h2>
<p>公共属性请查看基类 [page:Light Light]。</p>
<h3>[property:Float angle]</h3>
<p>
光线照射范围的角度,用弧度表示。不应超过 `Math.PI/2`。默认值为 `Math.PI/3`。
</p>
<h3>[property:Boolean castShadow]</h3>
<p>
此属性设置为 `true` 灯光将投射阴影。*注意*:这样做的代价比较高,需要通过调整让阴影看起来正确。
查看 [page:SpotLightShadow] 了解详细信息。
默认值为 `false`。
</p>
<h3>[property:Float decay]</h3>
<p>
光线随着距离增加变暗的衰减量。默认值为 `2`。<br />
在物理正确渲染的上下文中,不应更改默认值。
</p>
<h3>[property:Float distance]</h3>
<p>
当值为零时,光线将根据平方反比定律衰减到无限远。
当值不为零时,光线会先按照平方反比定律衰减,直到距离截止点附近,然后线性衰减到 0。
</p>
<p>默认值为 `0.0`。</p>
<h3>[property:Float intensity]</h3>
<p>
光源的强度。默认值为 `1`。<br />
单位是坎德拉cd<br /><br />
改变该值会影响到 `power` 的值。
</p>
<h3>[property:Boolean isSpotLight]</h3>
<p>
只读,用于检查对象的类型是否为 [name]。
</p>
<h3>[property:Float penumbra]</h3>
<p>
该属性设置照明区域在边缘附近的平滑衰减速度,取值范围在 0 到 1 之间。默认值为 `0.0`。
</p>
<h3>[property:Vector3 position]</h3>
<p>
假如这个值设置为 [page:Object3D.DEFAULT_UP] (0, 1, 0),光线将会从上往下照射。
</p>
<h3>[property:Float power]</h3>
<p>
光源的功率。<br />
单位为流明lm<br /><br />
改变该值会影响到 `intensity` 的值。
</p>
<h3>[property:SpotLightShadow shadow]</h3>
<p>
[page:SpotLightShadow] 对象,用与计算此光照的阴影。
</p>
<h3>[property:Object3D target]</h3>
<p>
灯光从它的位置([page:.position position])指向目标位置。默认的目标位置为`(0, 0, 0)`。<br />
*注意*:对于目标的位置,如果要改为除默认值之外的其他位置,该位置必须被添加到场景([page:Scene scene])中去。
<code>
scene.add( light.target );
</code>
这是为了让目标的 [page:Object3D.matrixWorld matrixWorld] 在每一帧自动更新。<br /><br />
也可以将目标设置为场景中的其他对象(任意拥有 [page:Object3D.position position] 属性的对象),如:
<code>
const targetObject = new THREE.Object3D();
scene.add(targetObject);
light.target = targetObject;
</code>
通过上述操作,光源就可以追踪目标对象了。
</p>
<h3>[property:Texture map]</h3>
<p>
用于调节光线颜色的纹理([page:Texture]聚光灯颜色会与该纹理的RGB值混合其比例与其alpha值相对应。<br />
The cookie-like masking effect is reproduced using pixel values (0, 0, 0, 1-cookie_value).<br />
*注意*: 如果 [page:.castShadow] 值为 `false` 时,[page:.map] 不可用。
</p>
<h2>方法Methods</h2>
<p>公共方法请查看基类 [page:Light Light]。</p>
<h3>[method:undefined dispose]()</h3>
<p>
释放由该实例分配的 GPU 相关资源。 当这个实例不再在你的应用中使用时,调用这个方法。
</p>
<h3>[method:this copy]( [param:SpotLight source] )</h3>
<p>
将所有属性的值从源 [page:SpotLight source] 复制到此聚光灯光源对象。
</p>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>