Skip to content

Commit ee74f6a

Browse files
author
Rob Sanderson
committed
minor updates
1 parent 70c3e74 commit ee74f6a

File tree

1 file changed

+82
-17
lines changed

1 file changed

+82
-17
lines changed

source/presentation/4.0/model.md

Lines changed: 82 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -598,6 +598,16 @@ __Properties__<br/>
598598
Orthographic Cameras _SHOULD_ have the following additional properties: [viewHeight](#viewHeight).
599599
{: .note}
600600

601+
```json
602+
{
603+
"id": "https://example.org/iiif/camera/1",
604+
"type": "OrthographicCamera",
605+
"near": 1.0,
606+
"far": 100.0,
607+
"viewHeight": 40.0
608+
}
609+
```
610+
601611

602612
##### Perspective Camera
603613

@@ -607,12 +617,14 @@ Orthographic Cameras _SHOULD_ have the following additional properties: [viewHei
607617

608618
The region of the Scene's space that is observable by the camera is bounded by two planes orthogonal to the direction the camera is facing, given in the `near` and `far` properties, and a vertical projection angle that provides the top and bottom planes of the region in the `fieldOfView` property.
609619

610-
Properties...
620+
__Properties__<br/>
621+
Perspective Cameras _SHOULD_ have the following additional properties: [fieldOfView](#fieldOfView).
622+
{: .note}
611623

612624

613625
```json
614626
{
615-
"id": "https://example.org/iiif/camera/1",
627+
"id": "https://example.org/iiif/camera/2",
616628
"type": "PerspectiveCamera",
617629
"near": 1.0,
618630
"far": 100.0,
@@ -621,42 +633,95 @@ Properties...
621633
```
622634

623635
#### Lights
636+
637+
It is necessary for there to be a Light within a Scene that illuminates the objects. If no Light is provided by the Scene's description, then the client _MUST_ add a Light.
638+
639+
This specification does not define other aspects of Lights, such as the rate of decay of the intensity of the light over a distance, the maximum range of the light, or the penumbra of a cone. Implementation of these aspects is client-dependent.
640+
641+
The specification defines four types of Light, below.
642+
643+
__Properties__<br/>
644+
All Lights _MUST_ have the following properties: [id](#id), and [type](#type).<br/><br/>
645+
All Lights _SHOULD_ have the following properties: [color](#color), and [intensity](#intensity).<br/><br/>
646+
All Lights _MAY_ have the following properties: [label](#label).
647+
{: .note}
648+
624649

625650
##### Ambient Light
626651

627-
`"type": "AmbientLight"`
652+
> `"type": "AmbientLight"`
628653
629-
Ambient Light evenly illuminates all objects in the Scene, and does not have a direction or position.
654+
Ambient Light evenly illuminates all objects in the Scene, and does not have a direction or position. It does not have any new properties. The Light itself _MUST_ be added into the scene at a specific position, however this is only such that editing interfaces can render the object to the user.
655+
656+
```json
657+
{
658+
"id": "https://example.org/iiif/light/1",
659+
"type": "AmbientLight",
660+
"color": "#F0A0F0",
661+
}
662+
```
630663

631664
##### Directional Light
632665

633-
`"type": "DirectionalLight"`
666+
> `"type": "DirectionalLight"`
667+
668+
Directional Lights emit their light in a specific direction as if infinitely far away, and as such the light does not come from a specific position. The rays produced are all parallel. The Light itself _MUST_ be added into the scene at a specific position, however this is only such that editing interfaces can render the object to the user.
634669

635-
Directional Light emits in a specific direction as if it is infinitely far away and the rays produced from it are all parallel. It does not have a specific position.
670+
The light is emitted in the negative Y (-y) direction by default, thus straight down, but the orientation of the light can be altered with `lookAt` or with a `RotationTransform`.
636671

637-
The light is emitted in the negative Y (-y) direction by default, but the orientation of the light can be altered by subsequent transforms.
672+
__Properties__<br/>
673+
Directional Lights _MAY_ have the following additional properties: [lookAt](#lookAt)
674+
{: .note}
675+
676+
```json
677+
{
678+
"id": "https://example.org/iiif/light/2",
679+
"type": "DirectionalLight",
680+
"color": "#A0A0F0",
681+
"lookAt": {"id": "https://example.org/iiif/annotations/models/1"}
682+
}
683+
```
638684

639685
##### Point Light
640686

641-
`"type": "PointLight"`
687+
> `"type": "PointLight"`
688+
689+
Point Lights emit from a single point within the Scene in all directions.
690+
691+
```json
692+
{
693+
"id": "https://example.org/iiif/light/3",
694+
"type": "PointLight",
695+
"color": "#A0F0F0"
696+
}
697+
```
642698

643-
Point Light emits from a single point within the Scene in all directions.
644699

645700
##### Spot Light
646701

647-
`"type": "SpotLight"`
702+
> `"type": "SpotLight"`
648703
649704
Spot Light emits a cone of light from a single point in a given direction. The Spot Light's `angle` property defines the radius of the cone.
650705

651706
The Spot Light emits in the negative Y (-y) direction by default, but the orientation of the light can be altered by subsequent transforms.
652707

708+
<img src="https://raw.githubusercontent.com/IIIF/3d/eds/assets/images/angle-of-cone.png" title="Angle of cone" alt="diagram of cone geometry showing how the angle of the cone is defined" width="250"/>
709+
710+
__Properties__<br/>
711+
Spot Lights _SHOULD_ have the following additional properties: [angle](#angle)<br/><br/>
712+
Spot Lights _MAY_ have the following additional properties: [lookAt](#lookAt)
713+
{: .note}
714+
715+
716+
653717
```json
654718
{
655-
"id": "https://example.org/iiif/spotLight/1",
719+
"id": "https://example.org/iiif/spotlight/1",
656720
"type": "SpotLight",
657721
"angle": 15.0,
658722
"color": "#FFFFFF",
659723
"intensity": {
724+
"id": "https://example.org/iiif/spotlight/1/value",
660725
"type": "UnitValue",
661726
"unit": "relative",
662727
"value": 0.5
@@ -674,19 +739,19 @@ Volume is relative to the input audio source's volume.
674739

675740
##### Ambient Audio
676741

677-
`"type": "AmbientAudio"`
742+
> `"type": "AmbientAudio"`
678743
679744
Ambient Audio emits equally throughout the Scene, and does not have a position or direction.
680745

681746
##### Point Audio
682747

683-
`"type": "PointAudio"`
748+
> `"type": "PointAudio"`
684749
685750
Point Audio emits from a single point in the Scene in all directions.
686751

687752
##### Spot Audio
688753

689-
`"type": "SpotAudio"`
754+
> `"type": "SpotAudio"`
690755
691756
Spot Audio emits a cone of sound from a single point in a given direction. The Spot Audio's `angle` property defines the radius of the cone.
692757

@@ -725,20 +790,20 @@ here are the rules about transforms?
725790

726791
##### Rotate Transform
727792

728-
`"type": "RotateTransform"`
793+
> `"type": "RotateTransform"`
729794
730795
A RotateTransform rotates the local coordinate space around the given axis in a counter-clockwise direction around the axis itself (e.g. around a pivot point of 0 on the axis). A point that was at x=1,y=1 and was rotated 90 degrees around the x axis would be at x=1,y=0,z=1. If an axis value is not specified, then it is not changed, resulting in a default of 0.0
731796

732797

733798
##### Scale Transform
734799

735-
`"type": "ScaleTransform"`
800+
> `"type": "ScaleTransform"`
736801
737802
A ScaleTransform applies a multiplier to one or more axes in the local coordinate space. A point that was at 3.5, after applying a ScaleTransform of 2.0 would then be at 7.0. If an axis value is not specified, then it is not changed, resulting in a default of 1.0
738803

739804
##### Translate Transform
740805

741-
`"type": "TranslateTransform"`
806+
> `"type": "TranslateTransform"`
742807
743808
A TranslateTransform moves all of the objects in the local coordinate space the given distance along the axis. A point that was at x=1.0, after applying a TranslateTransform of x=1.0 would be at x=2.0. If an axis value is not specified then it is not changed, resulting in a default of 0.0
744809

0 commit comments

Comments
 (0)