Skip to content

PDF20 Spec 13 3D

Marc Jones edited this page Dec 30, 2025 · 1 revision

13.6 3D Artwork

Part of: PDF20-Spec-13-Multimedia

Navigation: PDF20-Spec-13-Alternate | PDF20-Spec-Index | PDF20-Spec-13-Rich-Media


13.6 3D Artwork 13.6.1

General

Starting with PDF 1.6, collections of three-dimensional objects, such as those used by CAD software, may be embedded in PDF files. Such collections are often called 3D models; in the context of PDF, they shall be referred to as 3D artwork. The PDF constructs for 3D artwork support the following features: •

3D artwork may be rendered within a page; that is, not as a separate window or user interface element.

•

Multiple instances of 3D artwork may appear within a page or document.

•

Specific views of 3D artwork may be specified, including a default view that shall be displayed initially and other views that may be selected. Views may have names that can be presented in a user interface.

•

(PDF 1.7) PDF documents may specify how embedded 3D artwork shall be rendered, coloured, lit, and cross-sectioned, without the use of embedded ECMAScript. They may also specify state information that shall be applied to individual nodes (3D graphics objects or collections thereof) in the 3D artwork, such as visibility, opacity, position, or orientation.

•

Pages containing 3D artwork may be printed.

642

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

•

Users may pan, zoom and rotate the artwork, enabling them to examine complex objects from any angle or orientation.

•

(PDF 1.7) Keyframe animations contained in 3D artwork may be played in specific styles and timescales, without programmatic intervention.

•

ECMAScripts and other software may programmatically manipulate objects in the artwork, creating dynamic presentations in which objects move, spin, appear, and disappear. See ISO/DIS 21757-1.

•

(PDF 1.7) The activation of 3D artwork can trigger the display of additional user interface items in an interactive PDF processor. Such items may include model trees and toolbars.

•

Two-dimensional (2D) content such as labels may be overlaid on 3D artwork. This feature is not the same as the ability to apply 2D markup annotations.

•

(PDF 1.7) 2D markup annotations may be applied to specific views of the 3D artwork, using the ExData entry to identify the 3D annotation and the 3D view in that annotation.

The following subclauses describe the major PDF objects that relate to 3D artwork, as well as providing background information on 3D graphics: •

3D annotations provide a virtual camera through which the artwork shall be viewed. (see13.6.2 13.6.2, "3D Annotations").

•

3D streams shall contain the actual specification of a piece of 3D artwork (see 13.6.3, "3D streams"). This specification supports the Standard ECMA-363, Universal 3D file format developed by the 3D Industry Forum. PDF 2.0 extends PDF to support the ISO 14739-1 Product Representation Compact (PRC) file format.

•

3D views shall specify information about the relationship between the camera and the 3D artwork (see 13.6.4, "3D views"). Beginning with PDF 1.7, views may also describe additional parameters such as render mode, lighting, cross sections, and nodes. Nodes shall be 3D graphic objects or collections thereof.

•

3D coordinate systems are described in 13.6.5, "Coordinate systems for 3D"

•

2D markup annotations applied to 3D artwork views are described in 13.6.6, "3D markup"

NOTE

13.6.2

Many of the concepts and terminology of 3D rendering are beyond the scope of this reference. Readers interested in further information are encouraged to consult outside references.

3D annotations

3D annotations (PDF 1.6) are a way to include 3D artwork in PDF documents. Rich media annotations are another method (see 0 " Rich media"). "Table 309 — Additional entries specific to a 3D annotation" shows the entries specific to a 3D annotation dictionary. "Table 166 — Entries common to all annotation dictionaries" describes the entries common to all annotation dictionaries. In addition to these entries, a 3D annotation shall provide an appearance stream in its AP entry (see "Table 166 — Entries common to all annotation dictionaries") that has a normal appearance (the N entry in "Table 170 — Entries in an appearance dictionary"). This appearance may be used by applications that do not support 3D annotations and by all applications for the initial display of the annotation.

© ISO 2020 – All rights reserved

643

ISO 32000-2:2020(E)

Table 309 — Additional entries specific to a 3D annotation Key

Type

Value

Subtype

name

(Required) The type of annotation that this dictionary describes; shall be 3D for a 3D annotation.

3DD

stream or dictionary

(Required) A 3D stream (see 13.6.3, "3D streams") or 3D reference dictionary (see 13.6.3.3, "3D reference dictionaries") that specifies the 3D artwork to be shown.

3DV

(various)

(Optional) An object that specifies the default initial view of the 3D artwork that shall be used when the annotation is activated. It may be either a 3D view dictionary (see 13.6.4, "3D views") or one of the following types specifying an element in the VA array in the 3D stream (see "Table 311 — Entries in a 3D stream dictionary"): •

An integer specifying an index into the VA array.

•

A text string matching the IN entry in one of the views in the VA array.

•

A name that indicates the first (F), last (L), or default (D) entries in the VA array.

Default value: the default view in the 3D stream object specified by 3DD.

644

3DA

dictionary

(Optional) An activation dictionary (see "Table 310 — Entries in a 3D activation dictionary") that defines the times at which the annotation shall be activated and deactivated and the state of the 3D artwork instance at those times. Default value: an activation dictionary containing default values for all its entries.

3DI

boolean

(Optional) A flag indicating the primary use of the 3D annotation. If true, it is intended to be interactive; if false, it is intended to be manipulated programmatically, as with an ECMAScript animation. Interactive PDF processors may present different user interface controls for interactive 3D annotations (for example, to rotate, pan, or zoom the artwork) than for those managed by a script or other mechanism. Default value: true.

3DB

rectangle

(Optional) The 3D view box, which is the rectangular area in which the 3D artwork shall be drawn. It shall be within the rectangle specified by the annotation’s Rect entry and shall be expressed in the annotation’s target coordinate system (see discussion following this Table). Default value: the annotation’s Rect entry, expressed in the target coordinate system. This value is [-w/2 -h/2 w/2 h/2], where w and h are the width and height, respectively, of Rect.

3DU

dictionary

(Optional; PDF 2.0) A 3D units dictionary that specifies the units definitions for the 3D data associated with this annotation. See "Table 325 — Entries in a 3D units dictionary".

GEO

dictionary

(Optional; PDF 2.0) For Geospatial3D requirement type, a geospatial information section may be present as an attribute within a 3D Annotation. There are further conditions placed on the GPTS and LPTS arrays within the geo-reference coordinate tables to include 3D point values. See 12.10.2, "Geospatial measure dictionary".

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

The 3DB entry specifies the 3D view box, a rectangle in which the 3D artwork appears. The view box shall fit within the annotation’s rectangle (specified by its Rect entry). It may be the same size, or it may be smaller if necessary to provide extra drawing area for additional 2D graphics within the annotation. NOTE 1

Although 3D artwork can internally specify viewport size, interactive PDF processors ignore it in favour of information provided by the 3DB entry.

The view box shall be specified in the annotation’s target coordinate system, whose origin is at the centre of the annotation’s rectangle. Units in this coordinate system are the same as default user space units. Therefore, the coordinates of the annotation’s rectangle in the target coordinate system are [-w/2 -h/2 w/2 h/2]

given w and h as the rectangle’s width and height. The 3DD entry shall specify a 3D stream that contains the 3D artwork to be shown in the annotation; 3D streams are described in 13.6.3, "3D streams". The 3DD entry may specify a 3D stream directly; it may also specify a 3D stream indirectly by means of a 3D reference dictionary (see 13.6.3.3, "3D reference dictionaries"). These options control whether annotations shall share the same run-time instance of the artwork. The 3DV entry shall specify the view of the 3D artwork that is displayed when the annotation is activated (as described in the next paragraph). 3D views, which are described in 13.6.4, "3D views", represent settings for the virtual camera, such as position, orientation, and projection style. The view specified by 3DV shall be one of the 3D view dictionaries listed in the VA entry in a 3D stream (see "Table 311 — Entries in a 3D stream dictionary"). The 3DA entry shall be an activation dictionary (see "Table 310 — Entries in a 3D activation dictionary") that determines how the state of the annotation and its associated artwork may change. NOTE 2

These states serve to delay the processing or display of 3D artwork until a user chooses to interact with it. Such delays in activating 3D artwork can be advantageous to performance.

At any given moment, a 3D annotation shall be in one of two states: •

Inactive (the default initial state): the annotation displays the annotation’s normal appearance.

NOTE 3

•

It is typical, though not required, for the normal appearance to be a pre-rendered bitmap of the default view of the 3D artwork. PDF writers need to provide bitmaps of appropriate resolution for all intended uses of the document; for example, a high-resolution bitmap for high-quality printing and a screen-resolution bitmap for on-screen viewing. Optional content (see 8.11, "Optional content") can be used to select the appropriate bitmap for each situation.

Active: the annotation displays a rendering of the 3D artwork. This rendering shall be specified by the annotation’s 3DV entry.

© ISO 2020 – All rights reserved

645

ISO 32000-2:2020(E)

Table 310 — Entries in a 3D activation dictionary Key

Type

Value

A

name

(Optional) A name specifying the circumstances under which the annotation shall be activated. Valid values are: PO The annotation shall be activated as soon as the page containing the annotation is opened. PV The annotation shall be activated as soon as any part of the page containing the annotation becomes visible. XA The annotation shall remain inactive until explicitly activated by a script or user action. At any one time, only a single page shall be considered open in an interactive PDF processor, even though more than one page might be visible, depending on the page layout. Default value: XA. For performance reasons, documents intended for viewing in a web browser should use explicit activation (XA). In non-interactive applications, such as printing systems or aggregating interactive PDF processors, PO and PV indicate that the annotation shall be activated when the page is printed or placed; XA indicates that the annotation shall never be activated and the normal appearance shall be used.

AIS

name

(Optional) A name specifying the state of the artwork instance upon activation of the annotation. Valid values are: I The artwork shall be instantiated, but real-time script-driven animations shall be disabled. L Real-time script-driven animations shall be enabled if present; if not, the artwork shall be instantiated. Default value: L. In non-interactive PDF processors, the artwork shall be instantiated and scripts shall be disabled.

D

name

(Optional) A name specifying the circumstances under which the annotation shall be deactivated. Valid values are: PC The annotation shall be deactivated as soon as the page is closed. PI The annotation shall be deactivated as soon as the page containing the annotation becomes invisible. XD The annotation shall remain active until explicitly deactivated by a script or user action. At any one time, only a single page shall be considered open in an interactive PDF processor, even though more than one page might be visible, depending on the page layout. Default value: PI.

646

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Key

Type

Value

DIS

name

(Optional) A name specifying the state of the artwork instance upon deactivation of the annotation. Valid values are: U uninstantiated I instantiated L live Default value: U. NOTE 1 If the value of this entry is L, uninstantiation of instantiated artwork is necessary unless it has been modified. Uninstantiation is never required in non-interactive PDF processors.

TB

boolean

(Optional; PDF 1.7) A flag indicating the default behavior of an interactive toolbar associated with this annotation. If true, a toolbar shall be displayed by default when the annotation is activated and given focus. If false, a toolbar shall not be displayed by default. NOTE 2 Typically, a toolbar is positioned in proximity to the 3D annotation.

Default value: true NP

boolean

(Optional; PDF 1.7) A flag indicating the default behavior of the user interface for viewing or managing information about the 3D artwork. Such user interfaces can enable navigation to different views or can depict the hierarchy of the objects in the artwork (the model tree). If true, the user interface should be made visible when the annotation is activated. If false, the user interface should not be made visible by default. Default value: false

Style

name

(Optional; PDF 2.0) The value shall be either Embedded or Windowed. An interactive PDF processor shall support both Embedded and Windowed. Default value: Embedded

Window

dictionary (Optional; PDF 2.0) A RichMediaWindow Dictionary that describes the size and position of the floating user interface window when the value for Style is set to Windowed. See "Table 339 — Entries in a RichMediaWindow dictionary" for a detailed description.

Transparent boolean

(Optional; PDF 2.0) A flag that indicates whether the interactive PDF processor shall display the underlying page content through the transparent areas of the rich media content (where the alpha value is less than 1.0). Default value: false

The A and D entries of the activation dictionary determine when a 3D annotation may become active and inactive. The AIS and DIS entries determine what state the associated artwork shall be in when the annotation is activated or deactivated. 3D artwork may be in one of three states: •

Uninstantiated: the initial state of the artwork before it has been used in any way.

•

Instantiated: the state in which the artwork has been read and a run-time instance of the artwork has been created. In this state, it may be rendered but script-driven real-time modifications (that is, animations) shall be disabled.

© ISO 2020 – All rights reserved

647

ISO 32000-2:2020(E)

•

Live: the artwork has been instantiated, and it is being modified in real time to achieve some animation effect. In the case of keyframe animation, the artwork shall be live while it is playing and then shall revert to an instantiated state when playing completes or is stopped.

NOTE 4

The live state is valid only for keyframe animations or in interactive PDF processors that have ECMAScript support.

If 3D artwork becomes uninstantiated after having been instantiated, later use of the artwork requires re-instantiation (animations are lost, and the artwork appears in its initial form). NOTE 5

For this reason, uninstantiation is not necessary unless the artwork has been modified in some way; consumers can choose to keep unchanged artwork instantiated for performance reasons.

NOTE 6

In non-interactive systems such as printing systems, the artwork cannot be changed. Therefore, applications can choose to deactivate annotations and uninstantiate artwork differently, based on factors such as memory usage and the time needed to instantiate artwork, and the TB, NP, D and DIS entries can be ignored.

Multiple 3D annotations may share an instance of 3D artwork, as described in 13.6.3.3, "3D reference dictionaries". In such a case, the state of the artwork instance shall be determined in the following way: •

If any active annotation dictates (through its activation dictionary) that the artwork shall be live, it shall be live.

•

Otherwise, if any active annotation dictates that the artwork shall be instantiated, it shall be instantiated.

•

Otherwise (that is, all active annotations dictate that the artwork shall be uninstantiated), the artwork shall be uninstantiated.

The rules described in 13.6.2, "3D Annotations", apply only to active annotations. If all annotations referring to the artwork are inactive, the artwork nevertheless may be uninstantiated, instantiated, or live 3D streams. The Style and Window entries describe the mechanism that an interactive PDF processor shall use to present the 3D content in a floating window. The Transparent entry provides a flag for specifying whether the background of a 3D view shall be rendered using transparency. If Transparent has the value of true, then some area of the page may be visible through the background if the resulting alpha value at that location is less than 1.0. See also the Transparent entry of "Table 310 — Entries in a 3D activation dictionary".

13.6.3

3D streams

13.6.3.1

General

The specification of 3D artwork shall be contained in a 3D stream. 3D stream dictionaries, whose entries (in addition to the regular stream dictionary's entries; see 7.3.7, "Dictionary objects") are shown in "Table 311 — Entries in a 3D stream dictionary", may provide a set of predefined views of the artwork, as well as a default view. They may also provide scripts and resources for providing customised behaviours or presentations.

648

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Table 311 — Entries in a 3D stream dictionary Key

Type

Value

Type

name

(Optional) The type of PDF object that this dictionary describes; if present, shall be 3D for a 3D stream.

Subtype

name

(Required) A name specifying the format of the 3D data contained in the stream. The following are the only recognised values: U3D which specifies the Universal 3D file format. PRC which specifies the PRC file format. (PDF 2.0)

VA

array

(Optional) An array of 3D view dictionaries, each of which specifies a named preset view of this 3D artwork (see 13.6.4, "3D views").

DV

(various)

(Optional) An object that specifies the default (initial) view of the 3D artwork. It may be a 3D view dictionary (see 13.6.4, "3D views") or one of the following types: •

An integer specifying an index into the VA array.

•

A text string matching the IN entry in one of the views in the VA array.

•

A name that indicates the first (F) or last (L) entries in the VA array.

Default value: 0 (the first entry in the VA array) if VA is present; if VA is not present, the default view shall be specified within the 3D stream itself. Resources

name tree (Optional) A name tree that maps name strings to objects that may be used by applications or scripts to modify the default view of the 3D artwork. The names in this name tree shall be text strings so as to be encoded in a way that will be accessible from ECMAScript.

OnInstantiate stream

(Optional) An ECMAScript script that shall be executed when the 3D stream is instantiated.

AN

dictionary (Optional; PDF 1.7) An animation style dictionary indicating the method that interactive PDF processors should use to drive keyframe animations present in this artwork (see 13.6.3.2, "3D animation style dictionaries"). Default value: an animation style dictionary whose Subtype entry has a value of None.

ColorSpace

name or array

(Optional, PDF 2.0) The RGB colour space in which the 3D artwork’s colour values are encoded. Valid values are the name DeviceRGB, an array specifying a valid CalRGB color space (see 8.6.5.3 "CalRGB colour spaces"), or an array specifying a valid RGB-based ICCBased color space (see 8.6.5.5 "ICCBased colour spaces"). If this key is not present, the colour space for the 3D artwork colour values are considered undefined and a PDF processor may choose any appropriate RGB-based colour space, such as sRGB.

The Subtype entry specifies the format of the 3D stream data. PDF processors shall be prepared to encounter unknown values for Subtype and recover appropriately, which usually means leaving the annotation in its inactive state, displaying its normal appearance.

© ISO 2020 – All rights reserved

649

ISO 32000-2:2020(E)

NOTE

PDF processors need to follow the approach of falling back to the normal appearance with regard to entries in other dictionaries that can take different types or values than the ones specified here.

If present, the VA entry shall be an array containing a list of named present views of the 3D artwork. Each entry in the array shall be a 3D view dictionary (see 13.6.4, "3D views") that shall contain the name of the view and the information needed to display the view. The order of array elements determines the order in which the views shall be presented in a user interface. The DV entry specifies the view that shall be used as the initial view of the 3D artwork. Default views shall be determined in the following order of precedence: in the annotation dictionary, in the 3D stream dictionary, or in the 3D artwork contained in the 3D stream. 3D streams contain information that may be used by interactive PDF processors and by scripts to perform animations and other programmatically-defined behaviours, such as changing the viewing orientation or moving individual components of the artwork. If present, the OnInstantiate entry shall contain an ECMAScript script that shall be executed by applications that support ECMAScript whenever a 3D stream is read to create an instance of the 3D artwork. The Resources entry shall be a name tree that contains objects that may be used to modify the initial appearance of the 3D artwork.

13.6.3.2

3D animation style dictionaries

A 3D animation style dictionary (PDF 1.7) specifies the method that interactive PDF processors should use to apply timeline scaling to keyframe animations. It may also specify that keyframe animations be played repeatedly. The AN entry of the 3D stream shall specify a 3D animation style dictionary. A keyframe animation may be provided as the content of a 3D stream dictionary. A keyframe animation provides key frames and specifies the mapping for the position of geometry over a set period of time (animation timeline). Keyframe animation is an interactive feature that is highly dependent on the behaviour and controls provided by the interactive PDF processor. “Table 312 — Entries in an 3D animation style dictionary” shows the entries in an animation style dictionary. Table 312 — Entries in an 3D animation style dictionary

650

Key

Type

Value

Type

name

(Optional). The type of PDF object that this dictionary describes; if present, shall be 3DAnimationStyle.

Subtype name

(Optional) The animation style described by this dictionary; see "Table 313 — Animation styles" for valid values. If an animation style is encountered other than those described in "Table 313 — Animation styles", an animation style of None shall be used. Default value: None

PC

(Optional) An integer specifying the play count for this animation style. A nonnegative integer represents the number of times the animation shall be played. A negative integer indicates that the animation shall be infinitely repeated. This value shall be ignored for animation styles of type None. Default value: 0

integer

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Key

Type

Value

TM

number

(Optional) A positive number specifying the time multiplier that shall be used when running the animation. A value greater than one shortens the time it takes to play the animation, or effectively speeds up the animation. NOTE

This allows authors to adjust the desired speed of animations, without having to re-author the 3D artwork.

This value shall be ignored for animation styles of type None. Default value: 1

The descriptions of the animation styles (see "Table 313 — Animation styles") use the following variables to represent application time or keyframe settings specified in the 3D artwork. •

t is a point on the animation time line. This value shall be used in conjunction with the keyframe animation data to determine the state of the 3D artwork.

•

[r0, r1] is the keyframe animation time line.

•

ta is the current time of the interactive PDF processor.

•

t0 is the time when the interactive PDF processor starts the animation.

•

p is the time it takes to play the keyframe animation through one cycle. In the case of the Linear animation style, one cycle consists of playing the animation through once from beginning to end. In the case of the Oscillating animation style, one cycle consists of playing the animation from beginning to end and then from end to beginning.

•

m is the positive multiplier specified by the TM entry in the animation style dictionary. Table 313 — Animation styles Style

Description

None

Keyframe animations shall not be driven directly by the interactive PDF processor. This value shall be used by documents that are intended to drive animations through an alternative means, such as ECMAScript. The remaining entries in the animation style dictionary shall be ignored.

Linear

Keyframe animations shall be driven linearly from beginning to end. This animation style results in a repetitive playthrough of the animation, such as in a walking motion. t = (m(t a − t 0 ) + r0 ) % (r1 − r0 ) p = (r1 − r0 )/m The "%" symbol indicates the modulus operator.

Oscillating

© ISO 2020 – All rights reserved

Keyframe animations shall oscillate along their time range. This animation style results in a back-and-forth playing of the animation, such as exploding or collapsing parts. 𝑡 = 0.5(𝑟1 − 𝑟0 )(1 − 𝑐𝑜𝑠(𝑚(𝑡𝑎 − 𝑡0 ))) + 𝑟0 𝑝 = 2 ∗ 𝑝𝑖/𝑚

651

ISO 32000-2:2020(E)

13.6.3.3

3D reference dictionaries

More than one 3D annotation may be associated with the same 3D artwork. There are two ways in which this association may occur, as determined by the annotation’s 3DD entry (see "Table 314 — Entries in a 3D reference dictionary"): •

If the 3DD entry specifies a 3D stream, the annotation shall have its own run-time instance of the 3D artwork. Any changes to the artwork shall be reflected only in this annotation. Other annotations that refer to the same stream shall have separate run-time instances.

•

If the 3DD entry specifies a 3D reference dictionary (whose entries are shown in "Table 314 — Entries in a 3D reference dictionary"), the annotation shall have a run-time instance of the 3D artwork with all other annotations that specify the same reference dictionary. Any changes to the artwork shall be reflected in all such annotations. Table 314 — Entries in a 3D reference dictionary Key

Type

Value

Type

name

(Optional) The type of PDF object that this dictionary describes; if present, shall be 3DRef for a 3D reference dictionary.

3DD

stream

(Required) The 3D stream (see 13.6.3, "3D streams") containing the specification of the 3D artwork.

EXAMPLE

The following example and "Figure 87 — Default view of artwork" through "Figure 89 — Shared artwork (annotations 2 & 3) modified" show three annotations that use the same 3D artwork. Object 100 (Annotation

  1. has its own run-time instance of the 3D stream (object 200); object 101(Annotation 2) and object 102 (Annotation 3) share a run-time instance through the 3D reference dictionary (object 201).

100 0 obj <</Type /Annot /Subtype /3D /3DD 200 0 R

endobj 101 0 obj %3D annotation 2 <</Type /Annot /Subtype /3D /3DD 201 0 R

endobj 102 0 obj <</Type /Annot /Subtype /3D /3DD 201 0 R

endobj

%3D annotation 1

%Reference to the 3D stream containing the 3D artwork

%Reference to a 3D reference dictionary

%3D annotation 3

%Reference to the same 3D reference dictionary

200 0 obj %The 3D stream <</Type /3D /Subtype /U3D … other keys related to a stream, such as /Length …

stream … U3D data … endstream endobj

652

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

201 0 obj <</Type /3DRef /3DD 200 0 R

endobj

%3D reference dictionary %Reference to the actual 3D artwork.

Figure 87 — Default view of artwork

© ISO 2020 – All rights reserved

653

ISO 32000-2:2020(E)

Figure 88 — Annotation 2 rotated

Figure 89 — Shared artwork (annotations 2 & 3) modified "Figure 87 — Default view of artwork" shows the same initial view of the artwork in all three annotations. "Figure 88 — Annotation 2 rotated" shows the results of rotating the view of the artwork within Annotation 2. "Figure 89 — Shared artwork (annotations 2 & 3) modified" shows the results of manipulating the artwork shared by Annotation 2 and Annotation 3: they both reflect the change in the artwork because they share the same run-time instance. Annotation 1 remains unchanged because it has its own run-time instance. NOTE

654

When multiple annotations refer to the same instance of 3D artwork, the state of the instance is determined as described in 13.6.2, "3D Annotations" © ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

13.6.4

3D views

13.6.4.1

General

A 3D view (or simply view) specifies parameters that shall be applied to the virtual camera associated with a 3D annotation. These parameters may include orientation and position of the camera, details regarding the projection of camera coordinates into the annotation’s target coordinate system, and a description of the background on which the artwork shall be drawn. Starting with PDF 1.7, views may specify how 3D artwork is rendered, coloured, lit, and cross-sectioned, without the use of embedded ECMAScript. Views may also specify which nodes (three-dimensional areas) of 3D artwork shall be included in a view and whether those nodes are opaque or invisible. NOTE 1

Users can manipulate views by performing interactive operations such as free rotation and translation. In addition, 3D artwork can contain a set of predefined views that the author deems to be of particular interest. For example, a mechanical drawing of a part can have specific views showing the top, bottom, left, right, front, and back of an object.

A 3D stream may contain a list of named preset views of the 3D artwork, as specified by the VA entry, which shall be an array of 3D view dictionaries. The entries in a 3D view dictionary are shown in "Table 315 — Entries in a 3D view dictionary". Table 315 — Entries in a 3D view dictionary Key

Type

Value

Type

name

(Optional) The type of PDF object that this dictionary describes; if present, shall be 3DView for a 3D view dictionary.

XN

text string (Required) The external name of the view, suitable for presentation in a user interface.

IN

text string (Optional) The internal name of the view, used to refer to the view from other objects, such as the Go-To-3D-View action (see 12.6.4.16, "Go-To-3D-View actions"). If omitted, the external name XN shall be used.

MS

name

(Optional) A name specifying how the 3D camera-to-world transformation matrix shall be determined. The following values are valid: M Indicates that the C2W entry shall specify the matrix U3D Indicates that the view node selected by the U3DPath entry in the 3D stream object shall specify the matrix. NOTE 1 There is no corresponding MS field value for the PRC file format, that would correspond to a 3D stream object of type PRC. M is the only valid entry for 3D stream objects of type PRC (or it can be omitted).

If omitted, the view specified in the 3D artwork shall be used. MA

array

(Optional; PDF 2.0) An array of 3D measurement/markup dictionaries, where each dictionary represents an instance of a 3D measurement to be displayed in the context of this view. See "Table 326 — Entries in a 3D measurement/markup dictionary common to all markup subtypes" for the definition of a 3D measurement dictionary.

C2W

array

(Required if the value of MS is M, ignored otherwise) A 12-element 3D transformation matrix that specifies a position and orientation of the camera in world coordinates.

© ISO 2020 – All rights reserved

655

ISO 32000-2:2020(E)

Key

Type

Value

U3DPath

text string (Required if the value of MS is U3D, ignored otherwise) A sequence of one or or array more text strings used to access a view node within the 3D artwork. The first string in the array is a node ID for the root view node, and each subsequent string is the node ID for a child of the view node specified by the prior string. Each view node specifies a 3D transformation matrix (see 13.6.5, "Coordinate systems for 3D"); the concatenation of all the matrices forms the camera-toworld matrix. PDF writers should specify only a single text string, not an array, for this entry. NOTE 2 Do not confuse View Nodes with nodes. A View Node is a parameter in the 3D artwork that specifies a view; a node is a PDF dictionary that specifies 3D graphic objects or collections thereof.

656

CO

number

(Optional; used only if MS is present) A non-negative number indicating a distance in the camera coordinate system along the z axis to the centre of orbit for this view; see discussion following "Table 315 — Entries in a 3D view dictionary". If this entry is not present, the interactive PDF processor shall determine the centre of orbit.

P

dictionary (Optional) A projection dictionary (see 13.6.4.2, "Projection dictionaries") that defines the projection of coordinates in the 3D artwork (already transformed into camera coordinates) onto the target coordinate system of the annotation. Default value: a projection dictionary where the value of Subtype is Perspective, the value of FOV is 90, and all other entries take their default values.

O (capital letter O)

stream

BG

dictionary (Optional) A background dictionary that defines the background over which the 3D artwork shall be drawn (see 13.6.4.3, "3D background dictionaries"). Default value: a background dictionary whose entries take their default values.

RM

dictionary (Optional; PDF 1.7) A render mode dictionary that specifies the render mode to use when rendering 3D artwork with this view (see 13.6.4.4, "3D render mode dictionaries"). If omitted, the render mode specified in the 3D artwork shall be used.

LS

dictionary (Optional; PDF 1.7) A lighting scheme dictionary that specifies the lighting scheme that shall be used when rendering 3D artwork with this view (see 13.6.4.5, "3D lighting scheme dictionaries"). If omitted, the lighting scheme specified in the 3D artwork shall be used.

SA

array

(Optional; meaningful only if MS and P are present) A form XObject that shall be used to overlay 2D graphics on top of the rendered 3D artwork (see 13.6.6, "3D markup").

(Optional; PDF 1.7) An array that contains cross section dictionaries (see 13.6.4.6, "3D cross section dictionaries"). Each cross section dictionary provides parameters for applying a cross section to the 3D artwork when using this view. An empty array signifies that no cross sections shall be displayed.

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Key

Type

Value

NA

array

(Optional; PDF 1.7; meaningful only if NR is present) An array that contains 3D node dictionaries (see 13.6.4.7, "3D node dictionaries"). Each node dictionary may contain entries that change the node’s state, including its opacity and its position in world space. This entry and the NR entry specify how the state of each node shall be changed. If a node dictionary is present more than once, only the last such dictionary (using a depth-first traversal) shall be used.

NR

boolean

(Optional; PDF 1.7) Specifies whether nodes specified in the NA array shall be returned to their original states (as specified in the 3D artwork) before applying transformation matrices and opacity settings specified in the node dictionaries. If true, the artwork’s 3D node parameters shall be restored to their original states and then the dictionaries specified by the NA array shall be applied. If false, the dictionaries specified by the NA array shall be applied to the current states of the nodes. In addition to the parameters specified by a 3D node dictionary, this flag should also apply to any runtime parameters used by an interactive PDF processor. Default value: false

For any view, the PDF writer may provide 2D content specific to the view, to be drawn on top of the 3D artwork. The O entry specifies a form XObject that shall be overlaid on the rendered 3D artwork. The coordinate system of the form XObject shall be defined to be the same as the (x, y, 0) plane in the camera coordinate system (see 13.6.5, "Coordinate systems for 3D"). Use of the O entry is subject to the following restrictions: •

It can be specified only in 3D view dictionaries in which both a camera-to-world matrix (MS and associated entries) and a projection dictionary (the P entry) are present.

•

The form XObject is required to be associated with a specific view (not with the camera position defined by the 3D view dictionary). The interactive PDF processor shall draw it only when the user navigates using the 3D view, and shall not draw it when the user happens to navigate to the same orientation by manual means.

•

The interactive PDF processor shall draw it only if the user has not invoked any actions that alter the artwork-to-world matrix.

NOTE 2

Failure to abide by these restrictions could result in misalignment of the overlay with the rendered 3D graphics.

The CO entry specifies the distance from the camera to the centre of orbit for the 3D view, which is the point around which the camera shall rotate when performing an orbit-style navigation. "Figure 90 — Rotation around the centre of orbit" illustrates camera positioning when orbiting around the centre of orbit.

© ISO 2020 – All rights reserved

657

ISO 32000-2:2020(E)

Figure 90 — Rotation around the centre of orbit NOTE 3

The LS entry allows the lighting of the 3D artwork to be changed without changing the artwork itself. This enables consumers to view a given piece of 3D artwork with a variety of lighting options without requiring multiple copies of the 3D artwork stream that differ only in lighting. It also enables artwork with poor lighting to be corrected in cases where the original content cannot be re-authored. See 13.6.4.5, "3D lighting scheme dictionaries" The SA entry provides cross section information for clipping 3D artwork while its associated view is active. This allows view authors to be more clear in calling out the intended areas of interest for a particular view, some of which might otherwise be completely obscured. See 13.6.4.6, "3D cross section dictionaries" The NR and NA entries are meant to give a more accurate representation of the 3D artwork at a given state. These keys give view authors finer granularity in manipulating the artwork to be presented in a particular way. They also provide a means for returning node parameters to a known state after potential changes by interactive features such as keyframe animations and ECMAScript. See 13.6.4.7, "3D node dictionaries"

13.6.4.2

Projection dictionaries

A projection dictionary (see "Table 316 — Entries in a projection dictionary") defines the mapping of 3D camera coordinates onto the target coordinate system of the annotation. Each 3D view may specify a projection dictionary by means of its P entry. NOTE

658

Although view nodes can specify projection information, PDF consumers ignore it in favour of information in the projection dictionary. © ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

PDF 1.6 introduces near/far clipping. This type of clipping defines a near plane and a far plane (as shown in "Figure 91 — Perspective projection of 3D artwork onto the near plane"). Objects, or parts of objects, that are beyond the far plane or closer to the camera than the near plane are not drawn. 3D objects shall be projected onto the near plane and then scaled and positioned within the annotation’s target coordinate system, as described in "Table 316 — Entries in a projection dictionary". Table 316 — Entries in a projection dictionary Key

Type

Value

Subtype

name

(Required) The type of projection. Valid values shall be O (orthographic) or P (perspective).

CS

name

(Optional) The clipping style. Valid values shall be XNF (explicit near/far) or ANF (automatic near/far). Default value: ANF.

F

number

(Optional; meaningful only if the value of CS is XNF) The far clipping distance, expressed in the camera coordinate system. No parts of objects whose z coordinates are greater than the value of this entry are drawn. If this entry is absent, no far clipping occurs.

N

number

(Required if Subtype is P; meaningful only if the value of CS is XNF) The near clipping distance, expressed in the camera coordinate system. No parts of objects whose z coordinates are less than the value of this entry are drawn. If Subtype is P, the value shall be positive; if Subtype is O, the value shall be non-negative, and the default value is 0.

FOV

number

(Required if Subtype is P, ignored otherwise) A number between 0 and 180, inclusive, specifying the field of view of the virtual camera, in degrees. It defines a cone in 3D space centred around the z axis and a circle where the cone intersects the near clipping plane. The circle, along with the value of PS, specify the scaling of the projected artwork when rendered in the 2D plane of the annotation.

PS

number or name

(Optional; meaningful only if Subtype is P) An object that specifies the scaling used when projecting the 3D artwork onto the annotation’s target coordinate system. It defines the diameter of the circle formed by the intersection of the near plane and the cone specified by FOV. The value may be one of the following: •

A positive number that explicitly specifies the diameter as a distance in the annotation’s target coordinate system.

•

A name specifying that the diameter shall be set to the width (W), height (H), minimum of width and height (Min), or maximum of width and height (Max) of the annotation’s 3D view box.

Default value: W. OS

number

© ISO 2020 – All rights reserved

(Optional; meaningful only if Subtype is O) A positive number that specifies the scale factor to be applied to both the x and y coordinates when projecting onto the annotation’s target coordinate system (the z coordinate is discarded). Default value: 1.

659

ISO 32000-2:2020(E)

Key

Type

Value

OB

name

(Optional; PDF 1.7; meaningful only if Subtype is O) A name that specifies a strategy for binding (scaling to fit) the near plane’s x and y coordinates onto the annotation’s target coordinate system. The scaling specified in this entry shall be applied in addition to the scaling factor specified by the OS entry. The value may be one of the following: W

Scale to fit the width of the annotation

H

Scale to fit the height of the annotation

Min

Scale to fit the lesser of width or height of the annotation

Max

Scale to fit the greater of width or height of the annotation

Absolute

No scaling should occur due to binding.

Default value: Absolute.

The CS entry defines how the near and far planes are determined. A value of XNF means that the N and F entries explicitly specify the z coordinate of the near and far planes, respectively. A value of ANF for CS means that the near and far planes shall be determined automatically based on the objects in the artwork. The Subtype entry specifies the type of projection, which determines how objects are projected onto the near plane and scaled. The allowed values are O for orthographic projection and P for perspective projection. For orthographic projection, objects shall be projected onto the near plane by simply discarding their z value. They shall be scaled from units of the near plane’s coordinate system to those of the annotation’s target coordinate system by the combined factors specified by the OS entry and the OB entry. For perspective projection, a given coordinate (x, y, z) shall be projected onto the near plane, defining a 2D coordinate (x1, y1) using the following formulas: 𝑛 𝑧 𝑛 𝑦1 = 𝑦 × 𝑧 where n is the z coordinate of the near plane. 𝑥1 = 𝑥 ×

Scaling with perspective projection is more complicated than for orthographic projection. The FOV entry specifies an angle that defines a cone centred along the z axis in the camera coordinate system (see "Figure 91 — Perspective projection of 3D artwork onto the near plane"). The cone intersects with the near plane, forming a circular area on the near plane. "Figure 92 — Objects projected onto the near clipping plane, as seen from the position of the camera" shows this circle and graphics from the position of the camera.

660

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Figure 91 — Perspective projection of 3D artwork onto the near plane

Figure 92 — Objects projected onto the near clipping plane, as seen from the position of the camera The PS entry specifies the diameter that this circle will have when the graphics projected onto the near plane are rendered in the annotation’s 3D view box (see "Figure 93 — Positioning and scaling the near plane onto the annotation’s 3D view box"). Although the diameter of the circle determines the scaling factor, graphics outside the circle shall also be displayed, providing they fit within the view box, as seen in the figure. "Figure 94 — 3D annotation positioned on the page" shows the entire 3D annotation. In this case, the 3D view box is smaller than the annotation’s rectangle, which also contains 2D content outside the 3D view box. © ISO 2020 – All rights reserved

661

ISO 32000-2:2020(E)

Figure 93 — Positioning and scaling the near plane onto the annotation’s 3D view box

Figure 94 — 3D annotation positioned on the page

13.6.4.3

3D background dictionaries

A 3D background dictionary defines the background over which a 3D view shall be drawn. "Table 317 — Entries in a 3D background dictionary" shows the entries in a background dictionary. Currently, only a single opaque colour is supported, where the colour shall be defined in the DeviceRGB colour space. 3D artwork may include transparent objects; however, there is no interaction between such objects and objects drawn below the annotation. In effect, the 3D artwork and its background form a transparency group whose flattened results have an opacity of 1 (see 11, "Transparency").

662

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

NOTE

An annotation’s normal appearance needs to have the same behaviour with respect to transparency when the appearance is intended to depict the 3D artwork. This does not apply when the appearance is used for another purpose, such as a compatibility warning message.

Table 317 — Entries in a 3D background dictionary Key

Type

Value

Type

name

(Optional) The type of PDF object that this dictionary describes; if present, shall be 3DBG for a 3D background dictionary.

Subtype

name

(Optional) The type of background. The only valid value shall be SC (solid colour), which indicates a single opaque colour. Default value: SC.

CS

name or array

(Optional) The colour space of the background. The only valid value shall be the name DeviceRGB. Default value: DeviceRGB. PDF consumers shall be prepared to encounter other values that may be supported in future versions of PDF.

C

(various)

(Optional) The colour of the background, in the colour space defined by CS. Default value: an array [1 1 1] representing the colour white when the value of CS is DeviceRGB.

EA

boolean

(Optional) If true, the background shall apply to the entire annotation; if false, the background shall apply only to the rectangle specified by the annotation’s 3D view box (the 3DB entry in "Table 309 — Additional entries specific to a 3D annotation"). Default value: false.

13.6.4.4

3D render mode dictionaries

A 3D render mode dictionary (PDF 1.7) specifies the style in which the 3D artwork shall be rendered. NOTE 1

Surfaces can be filled with opaque colours, they can be stroked as a "wireframe", or the artwork can be rendered with special lighting effects.

NOTE 2

A render mode dictionary enables document authors to customise the rendered appearance of 3D artwork to suit the needs of the intended consumer, without reauthoring the artwork. For interactive PDF processors concerned strictly with geometry, complex artwork rendered using the Wireframe or Points style can have much better performance without the added overhead of texturing and lighting effects. Artwork in a document intended for print can have a much more integrated feel when using the Illustration render mode style.

The RM entry in the 3D views dictionary may specify a 3D render mode dictionary. "Table 318 — Entries in a render mode dictionary" shows the entries in a render mode dictionary. Table 318 — Entries in a render mode dictionary Key

Type

Value

Type

name

(Optional) The type of PDF object that this dictionary describes; if present, shall be 3DRenderMode.

Subtype

name

(Required) The type of render mode described by this dictionary; see "Table 319 — Render modes" for specific values. If an unrecognised value is encountered, then this render mode dictionary shall be ignored.

© ISO 2020 – All rights reserved

663

ISO 32000-2:2020(E)

Key

Type

Value

AC

array

(Optional) An array that specifies the auxiliary colour that shall be used when rendering the 3D image. The first entry in the array shall be a colour space; the subsequent entries shall be values specifying colour values in that colour space. The interpretation of this entry depends on the render mode specified by the Subtype entry, but it is often used to specify a colour for drawing points or edges. The only valid colour space shall be DeviceRGB. If a colour space other than DeviceRGB is specified, this entry shall be ignored and the default value shall be used. Default value: [/DeviceRGB 0 0 0] representing the colour black.

FC

name or array

(Optional) A name or array that specifies the face colour that shall be used when rendering the 3D image. This entry shall be relevant only when Subtype has a value of Illustration. If the value of FC is an array, the first entry in the array shall be a colour space and the subsequent entries shall be values specifying values in that colour space. The only valid colour space is DeviceRGB. Any colour space other than DeviceRGB shall be ignored and the default value shall be used. If the value of FC is a name, it shall describe a colour. The only valid name value shall be BG, specifying the current background colour in use for displaying the artwork. If a name other than BG is encountered, this entry shall be ignored and the background colour for the host annotation shall be used (see "Table 192 — Entries in an appearance characteristics dictionary"). Default value: BG

O

number (Optional) A number specifying the opacity of the added transparency applied by some render modes, using a standard additive blend. Default value: 0.5

CV

number (Optional) A number specifying the angle, in degrees, that shall be used as the crease value when determining silhouette edges. If two front-facing faces share an edge and the angle between the normals of those faces is greater than or equal to the crease value, then that shared edge shall be considered a silhouette edge. Default value: 45

For render modes that add a level of transparency to the rendering, the O entry specifies the additional opacity that shall be used. All such transparency effects use a standard additive blend mode. The CV entry sets the crease value that shall be used when determining silhouette edges, which may be used to adjust the appearance of illustrated render modes. An edge shared by two faces is a silhouette edge if either of the following conditions is met: •

One face is front-facing and the other is back-facing.

•

The angle between the two faces is greater than or equal to the crease value.

"Table 319 — Render modes" describes the render modes that may be specified in a render mode dictionary.

664

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Table 319 — Render modes Mode

Description

Solid

Displays textured and lit geometric shapes. The AC entry shall be ignored.

SolidWireframe

Displays textured and lit geometric shapes with single colour edges on top of them. The colour of these edges shall be determined by the AC entry.

Transparent

Displays textured and lit geometric shapes with an added level of transparency. The AC entry shall be ignored.

TransparentWireframe

Displays textured and lit geometric shapes with an added level of transparency, with single colour opaque edges on top of it. The colour of these edges shall be determined by the AC entry.

BoundingBox

Displays the bounding box edges of each node, aligned with the axes of the local coordinate space for that node. The colour of the bounding box edges shall be determined by the AC entry.

TransparentBoundingBox

Displays bounding boxes faces of each node, aligned with the axes of the local coordinate space for that node, with an added level of transparency. The colour of the bounding box faces shall be determined by the FC entry.

TransparentBoundingBoxOutline Displays bounding boxes edges and faces of each node, aligned with the axes of the local coordinate space for that node, with an added level of transparency. The colour of the bounding box edges shall be determined by the AC entry. The colour of the bounding boxes faces shall be determined by the FC entry. Wireframe

Displays only edges in a single colour. The colour of these edges shall be determined by the AC entry.

ShadedWireframe

Displays only edges, though interpolates their colour between their two vertices and applies lighting. The AC entry shall be ignored.

HiddenWireframe

Displays edges in a single colour, though removes back-facing and obscured edges. The colour of these edges shall be determined by the AC entry.

Vertices

Displays only vertices in a single colour. The colour of these points shall be determined by the AC entry.

ShadedVertices

Displays only vertices, though uses their vertex colour and applies lighting. The AC entry shall be ignored.

Illustration

Displays silhouette edges with surfaces, removes obscured lines. The colour of these edges shall be determined by the AC entry, and the colour of the surfaces shall be determined by the FC entry.

© ISO 2020 – All rights reserved

665

ISO 32000-2:2020(E)

Mode

Description

SolidOutline

Displays silhouette edges with lit and textured surfaces, removes obscured lines. The colour of these edges shall be determined by the AC entry.

ShadedIllustration

Displays silhouette edges with lit and textured surfaces and an additional emissive term to remove poorly lit areas of the artwork. The colour of these edges shall be determined by the AC entry.

If a render mode type is encountered other than those described in "Table 319 — Render modes", the render mode dictionary containing that entry shall be ignored by its consumers. This allows future documents using new render modes to behave consistently with future documents using new 3D view constructs that are ignored by older viewers.

13.6.4.5

3D lighting scheme dictionaries

A 3D lighting scheme dictionary (PDF 1.7) specifies the lighting to apply to 3D artwork. The LS entry in the 3D view may include a 3D lighting scheme dictionary. "Table 320 — Entries in a 3D lighting scheme dictionary" shows the entries in a 3D lighting scheme dictionary. Table 320 — Entries in a 3D lighting scheme dictionary Key

Type

Value

Type

name

(Optional) The type of PDF object that this dictionary describes; if present, shall be 3DLightingScheme.

Subtype

name

(Required) The style of lighting scheme described by this dictionary (see "Table 321 — 3D lighting scheme styles").

"Table 321 — 3D lighting scheme styles" describes the supported lighting schemes. With the exception of the Artwork lighting style, all the lights specified in "Table 321 — 3D lighting scheme styles" are infinite lights (also known as distant lights). Unlike lights from a point source, all rays from an infinite light source are emitted along a single direction vector. For lights specifying an ambient term, this term shall be added to the diffuse colour of an object’s material. All colours shall be specified in the DeviceRGB colour space. When a style other than Artwork is used, only those lights described shall be present; any lighting described in the artwork shall not be used. Table 321 — 3D lighting scheme styles

666

Scheme

Description

Artwork

Lights as specified in the 3D artwork. This has the same effect as if the 3D lighting scheme dictionary were omitted. © ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Scheme

Description

None

No lights shall be used. That is, lighting specified in the 3D artwork shall be ignored.

White

Three blue-gray infinite lights, no ambient term

Day

Night

Hard

Primary

Blue

Red

Light 1

Colour: <0.38, 0.38, 0.45>

Direction: <-2.0, -1.5, -0.5>

Light 2

Colour: <0.6, 0.6, 0.67>

Direction: <2.0, 1.1, -2.5>

Light 3

Colour: <0.5, 0.5, 0.57>

Direction: <-0.5, 0.0, 2.0>

Three light-gray infinite lights, no ambient term Light 1

Colour: <0.5, 0.5, 0.5>

Direction: <-2.0, -1.5, -.5>

Light 2

Colour: <0.8, 0.8, 0.9>

Direction: <2.0, 1.1, -2.5>

Light 3

Colour: <0.9, 0.9, 0.9>

Direction: <0.02, 0.01, 2.0>

One yellow, one aqua, and one blue infinite light, no ambient term Light 1

Colour: <1, .75, .39>

Direction: <-2.0, -1.5, -0.5>

Light 2

Colour: <0.31, 0.47, 0.55>

Direction: <2.0, 1.1, -2.5>

Light 3

Colour: <.5, .5, 1.0>

Direction: <0.0, 0.0, 2.0>

Three gray infinite lights, moderate ambient term Light

Colour: <0.5, 0.5, 0.5>

Direction: <-1.5, -1.5, -1.5>

Light 2

Colour: <0.8, 0.8, 0.9>

Direction: <1.5, 1.5, -1.5>

Light 3

Colour: <0.9, 0.9, 0.9>

Direction: <-0.5, 0, 2.0>

Ambient

Colour: <0.5, 0.5, 0.5>

One red, one green, and one blue infinite light, no ambient term Light 1

Colour: <1, 0.2, 0.5>

Direction: <-2, -1.5, -0.5>

Light 2

Colour: <0.2, 1.0, 0.5>

Direction: <2.0, 1.1, -2.5>

Light 3

Colour: <0, 0, 1>

Direction: <0.0, 0.0, 2.0>

Three blue infinite lights, no ambient term Light 1

Colour: <0.4, 0.4, 0.7>

Direction: <-2.0, -1.5, -0.5>

Light 2

Colour: <0.75, 0.75, 0.95>

Direction: <2.0, 1.1, -2.5>

Light 3

Colour: <0.7, 0.7, 0.95>

Direction: <0.0, 0.0, 2.0>

Three red infinite lights, no ambient term Light 1

Colour: <0.8, 0.3, 0.4>

Direction: <-2.0, -1.5, -0.5>

Light 2

Colour: <0.95, 0.5, 0.7>

Direction: <2.0, 1.1, -2.5>

Light 3

Colour: <0.95, 0.4, 0.5>

Direction: <0.0, 0.0, 2.0>

© ISO 2020 – All rights reserved

667

ISO 32000-2:2020(E)

Scheme

Description

Cube

Six gray infinite lights aligned with the major axes, no ambient term

CAD

Light 1

Colour: <.4, .4, .4>

Direction: <1.0, 0.01, 0.01>

Light 2

Colour: <.4, .4, .4>

Direction: <0.01, 1.0, 0.01>

Light 3

Colour: <.4, .4, .4>

Direction: <0.01, 0.01, 1.0>

Light 4

Colour: <.4, .4, .4>

Direction: <-1.0, 0.01, 0.01>

Light 5

Colour: <.4, .4, .4>

Direction: <0.01, -1.0, 0.01>

Light 6

Colour: <.4, .4, .4>

Direction: <0.01, 0.01, -1.0>

Three gray infinite lights and one light attached to the camera, no ambient term

Headlamp

Light 1

Colour: <0.72, 0.72, 0.81>

Direction: <0.0, 0.0, 0.0>

Light 2

Colour: <0.2, 0.2, 0.2>

Direction: <-2.0, -1.5, -0.5>

Light 3

Colour: <0.32, 0.32, 0.32>

Direction: <2.0, 1.1, -2.5>

Light 4

Colour: <0.36, 0.36, 0.36>

Direction: <0.04, 0.01, 2.0>

Single infinite light attached to the camera, low ambient term Light 1

Colour: <0.8, 0.8, 0.9>

Ambient

Colour: <0.1, 0.1, 0.1>

Direction: <0.0, 0.0, 0.0>

If a lighting scheme style is encountered other than those described in "Table 321 — 3D lighting scheme styles" the lighting scheme dictionary containing that entry shall be ignored. NOTE

13.6.4.6

This allows future documents using new lighting schemes to behave consistently with future documents using new 3D view constructs. That is, the expected behaviour is for the interactive PDF processor to ignore unrecognised lighting styles and 3D view constructs.

3D cross section dictionaries

A 3D cross section dictionary (PDF 1.7) specifies how a portion of the 3D artwork shall be clipped for the purpose of showing artwork cross sections. The SA entry of a 3D view may specify multiple 3D cross section dictionaries. NOTE

Cross sections enable interactive PDF processors to display otherwise hidden parts of the artwork. They also allow users to comment on cross sections, using markup annotations. For example, markup annotations can be used to apply markup annotations to a cross section or to measure distances in a cross section. If multiple cross sections are specified for a view, the markup annotations in the view apply to all cross sections in the view.

"Table 322 — Entries in a 3D cross section dictionary" shows the entries in a 3D cross section dictionary. Table 322 — Entries in a 3D cross section dictionary Key

Type

Type name

668

Value (Optional) The type of PDF object that this dictionary describes; if present, shall be 3DCrossSection for a 3D cross section dictionary. © ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Key

Type

Value

C

array

(Optional) A three element array specifying the centre of rotation on the cutting plane in world space coordinates (see 13.6.5, "Coordinate systems for 3D"). Default value: [0 0 0] specifying a cutting plane rotating about the origin of the world space.

O

array

(Required) A three-element array specifying the orientation of the cutting plane in world space, where each value represents the orientation in relation to the X, Y, and Z axes, respectively (see 13.6.5, "Coordinate systems for 3D"). Exactly one of the values shall be null, indicating an initial state of the cutting plane that is perpendicular to the corresponding axis and clipping all geometry on the positive side of that axis. The other two values shall be numbers indicating the rotation of the plane, in degrees, around their corresponding axes. The order in which these rotations are applied shall match the order in which the values appear in the array. Default value: [null 0 0] specifying a cutting plane that is perpendicular to the X axis and coplanar with the Y and Z axes.

PO

number (Optional) A number in the range [0, 1] indicating the opacity of the cutting plane using a standard additive blend mode. Default value: 0.5

PC

array

IV

boolean (Optional) A flag indicating the visibility of the intersection of the cutting plane with any 3D geometry. If true, then the intersection shall be visible. If false, then the intersection shall not be visible. Default value: false

IC

array

ST

boolean (Optional; PDF 2.0) Show Transparent. A flag indicating that the portion of a model on the cut side of a section plane shall be viewed using a transparent render mode. If true, the clipped portion of the model shall be drawn as transparent regardless of the render mode of the non-cut portion of the model. The recommend appearance uses graphical settings identical or similar to those used by the existing Transparent 3DRenderMode in "Table 319 — Render modes" already supported by the 13.6.4.4, "3D render mode dictionaries". If false, the clipped portion of the model shall not be drawn. Default value: false.

SC

boolean (Optional; PDF 2.0) Section Capping. A flag indicating whether 3D Nodes and the section plane shall be analysed and rendered as if cutting through a solid object. If true, an algorithm is applied with the result that additional temporary geometry may be created to represent a section cap. The section cap shall be visible within the area enclosed by the intersection of the 3D Node 3D geometry with the section plane. If the flag is false, no additional temporary geometry shall be created to represent a section cap. Default value: false.

(Optional) An array that specifies the colour for the cutting plane. The first entry in the array is a colour space, and the remaining entries are values in that colour space. The only valid colour space is DeviceRGB. If a colour space other than DeviceRGB is specified, this entry shall be ignored and the default value shall be used. Default value: [/DeviceRGB 1 1 1] representing the colour white.

(Optional; meaningful only if IV is true) An array that specifies the colour for the cutting plane’s intersection with the 3D artwork. The first entry in the array is a colour space, and the remaining entries are values in that colour space. The only valid colour space is DeviceRGB. If a colour space other than DeviceRGB is specified, this entry shall be ignored and the default value shall be used. Default value: [/DeviceRGB 0 1 0] representing the colour green.

© ISO 2020 – All rights reserved

669

ISO 32000-2:2020(E)

The C entry specifies the centre of the cutting plane. This implies that the plane passes through the centre point, but it is also the point of reference when determining the orientation of the plane. The O array indicates the orientation of the cutting plane, taking into account its centre. The orientation may be determined by a two-step process: a) The plane shall be situated such that it passes through point C, and oriented such that it is perpendicular to the axis specified by the array entry whose value is null. b) For each of the other two axes, the plane shall be rotated the specified number of degrees around the associated axis, while maintaining C as a fixed point on the plane. Since the two axes are perpendicular, the order in which the rotations are performed is irrelevant. The PO entry specifies the opacity of the plane itself when rendered, while the PC entry provides its colour. When the PO entry is greater than 0, a visual representation of the cutting plane shall be rendered with the 3D artwork. This representation is a square with a side length equal to the length of the diagonal of the maximum bounding box for the 3D artwork, taking into account any keyframe animations present. When the PO entry is 0, no visible representation of the cutting plane shall be rendered. The IV entry shall be a boolean value that determines whether a visual indication shall be drawn of the plane’s intersection with the 3D artwork. If such an indication is drawn, the IC entry shall specify its colour. EXAMPLE

The following example describes a set of views and corresponding cross sections that illustrate the various effects of orientation.

3 0 obj <<

%CrossSection1 /Type /3DCrossSection /C [0 0 0] /O [null 0 0] /PO 0.35 /PC [/DeviceRGB 0.75 0.86 1] /IV true /IC [/DeviceRGB 0 1 0]

endobj 4 0 obj <<

%CrossSection2 /Type /3DCrossSection /C [0 0 0] /O [null -30 0] /PO 0.35 /PC [/DeviceRGB 0.75 0.86 1] /IV true /IC [/DeviceRGB 0 1 0]

endobj 5 0 obj <<

%CrossSection3

/Type /3DCrossSection /C [0 0 0] /O [null 0 30] /PO 0.35 /PC [/DeviceRGB 0.75 0.86 1]

670

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

/IV true /IC [/DeviceRGB 0 1 0]

endobj 6 0 obj <<

%CrossSection4 /Type /3DCrossSection /C [0 0 0] /O [null -30 30] /PO 0.35 /PC [/DeviceRGB 0.75 0.86 1] /IV true /IC [/DeviceRGB 0 1 0]

endobj 7 0 obj <<

%View0 /Type /3DView /XN (NoCrossSection) /SA [] …

endobj 8 0 obj <<

%View1 /Type /3DView /XN (CrossSection1) /SA [3 0 R] …

endobj 9 0 obj <<

%View2 /Type /3DView /XN (CrossSection2) /SA [4 0 R] …

endobj 10 0 obj <<

%View3 /Type /3DView /XN (CrossSection3) /SA [5 0 R] …

endobj 11 0 obj << /Type /3DView /XN (CrossSection4) /SA [6 0 R] …

endobj

%View4

The following illustrations show the views described in the previous example, some of which include cross sections. © ISO 2020 – All rights reserved

671

ISO 32000-2:2020(E)

Figure 95 — Rendering of the 3D artwork using View0 (no cross section) "Figure 95 — Rendering of the 3D artwork using View0 (no cross section)" through "Figure 99 — Rendering of the 3D artwork using View4" use world coordinates whose origin is the centre of the cube. The axes illustrated in each diagram show the relative orientation of the world coordinate axes, not the actual position of those axes. These axes are not part of the 3D artwork used in this example.

Figure 96 — Rendering of the 3D artwork using View1 (cross section perpendicular to the x axis) "Figure 96 — Rendering of the 3D artwork using View1 (cross section perpendicular to the x axis)" shows the cross section specified for the 3DView that references CrossSection1. The illustration shows the edges of the cutting plane ending at the edges of the annotation’s rectangle. This cross section specifies a plane with the following characteristics: •

Includes the world art origin: /C [0 0 0]

•

Perpendicular to the X axis and parallel to the Y and Z axes: /O [null 0 0]

•

Opacity of the cutting plane is 35%: /PO 0.35

•

Colour of the cutting plane is light blue: /PC [/DeviceRGB 0.75 0.86 1]

•

Intersection of the cutting plane with the object is visible: /IV true

•

Colour of the intersection of the cutting plane and the object is green: /IC [/DeviceRGB 0 1 0]

672

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Figure 97 — Rendering of the 3D artwork using View2 (cross section rotated around the y axis by -30 degrees) "Figure 97 — Rendering of the 3D artwork using View2 (cross section rotated around the y axis by -30 degrees)" shows the cross section specified for the 3DView that references CrossSection2. This cross section specifies a plane that differs from the one specified in CrossSection1 ("Figure 96 — Rendering of the 3D artwork using View1 (cross section perpendicular to the x axis)") in the following way: •

Perpendicular to the X axis, rotated -30 degrees around the Y axis, and parallel to the Z axis: /O [null -30 0]

Figure 98 — Rendering of the 3D artwork using View3 (cross section rotated around the z axis by 30 degrees) "Figure 98 — Rendering of the 3D artwork using View3 (cross section rotated around the z axis by 30 degrees)" shows the cross section specified for the 3DView that references CrossSection3. This cross section specifies a plane that differs from the one specified in CrossSection1 ("Figure 96 — Rendering of the 3D artwork using View1 (cross section perpendicular to the x axis)") in the following way: •

Perpendicular to the X axis, parallel to the Y axis, and rotated 30 degrees around the Z axis: /O [null 0 30]

© ISO 2020 – All rights reserved

673

ISO 32000-2:2020(E)

Figure 99 — Rendering of the 3D artwork using View4 (cross section rotated around the y axis by -30 degrees and around the z axis by 30 degrees) "Figure 99 — Rendering of the 3D artwork using View4" shows the cross section specified for the 3DView that references CrossSection4. This cross section specifies a plane that differs from the one specified in CrossSection1 ("Figure 96 — Rendering of the 3D artwork using View1 (cross section perpendicular to the x axis)") in the following way: •

Perpendicular to the X axis, rotated -30 degrees around the Y axis, and rotated 30 degrees around the Z axis: /O [null -30 30]

13.6.4.7

3D node dictionaries

A 3D view may specify a 3D node dictionary (PDF 1.7), which specifies particular areas of 3D artwork and the opacity and visibility with which individual nodes shall be displayed. The 3D artwork shall be contained in the parent 3D stream object. The NA entry of the 3D views dictionary may specify multiple 3D node dictionaries for a particular view. NOTE 1

While many PDF dictionaries reference 3D artwork in its entirety, it is often useful to reference 3D artwork at a more granular level. This enables properties such as visibility, opacity, and orientation to be applied to subsets of the 3D artwork. These controls enable underlying nodes to be revealed, by making the overlying nodes transparent or by moving them out of the way.

NOTE 2

Do not confuse nodes with view nodes. A node is a PDF dictionary that specifies an area in 3D artwork, while a view node is a parameter in the 3D artwork that specifies a view.

"Table 323 — Entries in a 3D node dictionary" shows the entries in a 3D node dictionary. Table 323 — Entries in a 3D node dictionary

674

Key

Type

Value

Type

name

(Optional) The type of PDF object that this dictionary describes; if present, shall be 3DNode for a 3D node dictionary.

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Key

Type

Value

N

text string (Required) The name of the node being described by the node dictionary. All names in the node dictionary shall be unique. Interpretation of this entry shall depend upon the 3D format specified in the Subtype entry in "Table 311 — Entries in a 3D stream dictionary" as described below: U3D If the Subtype of the corresponding 3D Stream is U3D, this entry shall correspond to the field Node block name, specified in the Universal 3D file format. PRC (PDF 2.0) If the Subtype of the corresponding 3D Stream is PRC, this entry shall be the Unique Identifier (UUID) as specified in ISO 14739-1. NOTE 1 When comparing this entry to node names for a particular convention (such as Universal 3D or PRC), interactive PDF processors will need to translate between the PDF text encoding used by PDF and the character encoding specified in the 3D stream. NOTE 2 The description of the value of the N key was clarified in this document (2020).

O

number

(Optional) A number in the range [0, 1] indicating the opacity of the geometry supplied by this node using a standard additive blend mode. If this entry is absent, the viewer shall use the opacity specified for the parent node or for the 3D artwork (in ascending order).

V

boolean

(Optional) A flag indicating the visibility of this node. If true, then the node is visible. If false, then the node shall not be visible. If this entry is absent, the viewer shall use the visibility specified for the parent node or for the 3D artwork (in ascending order).

M

array

(Optional) A 12-element 3D transformation matrix that specifies the position and orientation of this node, relative to its parent, in world coordinates (see 13.6.5, "Coordinate systems for 3D").

Instance dictionary (Required if data are present; PDF 2.0) An indirect object reference to a RichMediaInstance dictionary (see "Table 343 — Entries in a RichMediaInstance dictionary") that is also referenced by an entry in the Instances array. Data

text string (Optional; PDF 2.0) A text string or stream that contains state data to be or stream passed to the instance when the view is triggered. See the extended description of the Data key in "Table 345 — Entries in a View Params dictionary".

RM

dictionary (Optional; PDF 2.0) A render mode dictionary that shall specify the render mode and related properties for this node. If omitted, the render mode specified in the 3D view is used, and if that is not present, the render mode of the 3D artwork is used. The render mode dictionary shall be identical to that used by the 3D view dictionary. See "Table 318 — Entries in a render mode dictionary".

The N entry specifies which node in the 3D stream corresponds to this node dictionary. The O entry describes the opacity that shall be used when rendering this node, and the V entry shall determine whether or not the node is rendered at all. While a node with an opacity of 0 shall be © ISO 2020 – All rights reserved

675

ISO 32000-2:2020(E)

rendered in the same way as a non-visible node, having a separate value for the visibility of a node allows interactive PDF processors to show/hide partially transparent nodes, without overwriting the intended opacity of those nodes. The M entry specifies the node’s matrix relative to its parent, in world coordinates. If an hierarchy of nodes is intended to be repositioned while still maintaining its internal structure, then only the node at the root of the hierarchy needs to be adjusted. The Instance and Data entries provide a reference to an instance array dictionary within the Instances array. The content of Data shall be passed to and from the appropriate media run time engine by the interactive PDF processor in a rich media context. The RM provides the facility of specifying a change in render mode for each node. In PDF 1.7, render mode could be specified globally or per view. See 13.6.4, "3D views". The RM entry to the 3D node dictionary is applicable both for the 3D node structure within a rich media context (see 13.7.2, "RichMedia annotations") and within the existing 3D annotations structure (see 13.6.2, "3D Annotations"). The Instances array and additional Data entries are applicable only to 3D nodes within a rich media context. EXAMPLE

676

The following example shows a 3D view specifying an array of node parameters.

3 0 obj [<</Type /3DNode /N (Sphere) /O 1 /V true /M […]>> <</Type /3DNode /N (Cone) /O 1 /V true>> <</Type /3DNode /N (Cube) /O 1 /V true>> ]

%Default node params with all shapes visible and opaque

4 0 obj [<</Type /3DNode /N (Sphere) /O 0.5 /V true>> <</Type /3DNode /N (Cone) /O 1 /V false>> <</Type /3DNode /N (Cube) /O 1 /V true>> ] endobj

%Params with the cone hidden and the sphere semi-transparent

5 0 obj << /Type /3DView /XN (View1) /NA 3 0 R …

%View1, using the default set of node params

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

endobj 6 0 obj << /Type /3DView /XN (View2) /NA 4 0 R …

endobj

%View2, using the alternative set of node params

Figure 100 — Rendering of the 3D artwork using View1 (all shapes visible and opaque) "Figure 100 — Rendering of the 3D artwork using View1 (all shapes visible and opaque)" shows a view whose node array includes three nodes, all of which shall be rendered with the appearance opaque (/O

  1. and visible (/V true).

Figure 101 — Rendering of the 3D artwork using View2 (the cone is hidden and the sphere is semi-transparent) "Figure 101 — Rendering of the 3D artwork using View2 (the cone is hidden and the sphere is semitransparent)" shows a view with a node array that specifies the same three nodes used in "Figure 100 — Rendering of the 3D artwork using View1 (all shapes visible and opaque)". These nodes have the following display characteristics: •

The node named Sphere is partially transparent (/O 0.5) and visible (/V true)

•

The node named Cone is opaque (/O 1) and invisible (/V false)

•

The node named Cube is opaque (/O 1) and visible (/V true)

© ISO 2020 – All rights reserved

677

ISO 32000-2:2020(E)

13.6.5

Coordinate systems for 3D

3D artwork is a collection of objects whose positions and geometry shall be specified using threedimensional coordinates. 8.3, "Coordinate systems" discusses the concepts of two-dimensional coordinate systems, their geometry and transformations. This subclause extends those concepts to include the third dimension. As described in 8.3, "Coordinate systems" positions shall be defined in terms of pairs of x and y coordinates on the Cartesian plane. The origin of the plane specifies the location (0, 0); x values increase to the right and y values increase upward. For three-dimensional graphics, a third axis, the z axis, shall be used. The origin shall be at (0, 0, 0); positive z values increase going into the page. In two-dimensional graphics, the transformation matrix transforms the position, size, and orientation of objects in a plane. It is a 3-by-3 matrix, where only six of the elements may be changed; therefore, the matrix shall be expressed in PDF as an array of six numbers: 𝑎 𝑏 0 [ 𝑐 𝑑 0] = [𝑎 𝑏 𝑐 𝑑 𝑡𝑥 𝑡𝑦] 𝑡𝑥 𝑡𝑦 1 In 3D graphics, a 4-by-4 matrix shall be used to transform the position, size, and orientations of objects in a three-dimensional coordinate system. Only the first three columns of the matrix may be changed; therefore, the matrix shall be expressed in PDF as an array of 12 numbers: 𝑎 𝑑 [ 𝑔 𝑡𝑥

𝑏 𝑒 ℎ 𝑡𝑦

𝑐 𝑓 𝑖 𝑡𝑧

0 0 ] = [𝑎 0 1

𝑏

𝑐

𝑑

𝑒

𝑓

𝑔

ℎ

𝑖

𝑡𝑥

𝑡𝑦

𝑡𝑧]

3D coordinate transformations shall be expressed as matrix transformations:

[𝑥 ′

𝑦′

𝑧′

1] = [𝑥

𝑦

𝑧

𝑎 𝑑 1] × [ 𝑔 𝑡𝑥

𝑏 𝑒 ℎ 𝑡𝑦

𝑐 𝑓 𝑖 𝑡𝑧

0 0 ] 0 1

Carrying out the multiplication has the following results: 𝑥 ′ = 𝑎 × 𝑥 + 𝑑 × 𝑦 + 𝑔 × 𝑧 + 𝑡𝑥 𝑦 ′ = 𝑏 × 𝑥 + 𝑒 × 𝑦 + ℎ × +𝑡𝑦 𝑧 ′ = 𝑐 × 𝑥 + 𝑓 × 𝑦 + 𝑖 × 𝑧 + 𝑡𝑧 Position and orientation of 3D artwork typically involves translation (movement) and rotation along any axis. The virtual camera represents the view of the artwork. The relationship between camera and artwork may be thought of in two ways: •

The 3D artwork is in a fixed position and orientation, and the camera moves to different positions and orientations.

•

The camera is in a fixed location, and the 3D artwork is translated and rotated.

678

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Both approaches may achieve the same visual effects; in practice, 3D systems typically use a combination of both. Conceptually, there are three distinct coordinate systems: •

The artwork coordinate system.

•

The camera coordinate system, in which the camera shall be positioned at (0, 0, 0) facing out along the positive z axis, with the positive x axis to the right and the positive y axis going straight up.

•

An intermediate system called the world coordinate system.

Two 3D transformation matrices shall be used in coordinate conversions: •

The artwork-to-world matrix specifies the position and orientation of the artwork in the world coordinate system. This matrix shall be contained in the 3D stream.

•

The camera-to-world matrix specifies the position and orientation of the camera in the world coordinate system. This matrix shall be specified by either the C2W or U3DPath entries of the 3D view dictionary.

When drawing 3D artwork in a 3D annotation’s target coordinate system, the following transformations take place: Artwork coordinates shall be transformed to world coordinates: [𝑥w 𝑦w 𝑧w 1] = [𝑥a 𝑦a 𝑧a 1] × aw World coordinates shall be transformed to camera coordinates: [𝑥c 𝑦c 𝑧c 1] = [𝑥w 𝑦w 𝑧w 1] × (cw −1 ) The first two steps can be expressed as a single equation, as follows: [𝑥c 𝑦c 𝑧c 1] = [𝑥a 𝑦a 𝑧a 1] × (aw × cw −1 ) Finally, the camera coordinates shall be projected into two dimensions, eliminating the z coordinate, then scaled and positioned to make the scene contents fit within the annotation’s target coordinate system. NOTE

13.6.6

The above paragraph was clarified in this document (2020).

3D markup

Beginning with PDF 1.7, users may comment on specific views of 3D artwork by using markup annotations (see 12.5.6.2, "Markup annotations"). Markup annotations (as other annotations) are normally associated with a location on a page. To associate the markup with a specific view of a 3D annotation, the annotation dictionary for the markup annotation contains an ExData entry (see "Table 173 — Additional entries in markup annotation dictionaries specific to external data") that specifies the 3D annotation and view. "Table 324 — Entries in an external data dictionary used to markup 3D annotations" describes the entries in an external data dictionary used to markup 3D annotations.

© ISO 2020 – All rights reserved

679

ISO 32000-2:2020(E)

Table 324 — Entries in an external data dictionary used to markup 3D annotations Key

Type

Value

Type

name

(Required) The type of PDF object that this dictionary describes; shall be ExData for an external data dictionary.

Subtype

name

(Required) The type of external data that this dictionary describes; shall be Markup3D for a 3D comment. The only defined value is Markup3D.

3DA

dictionary or text string

(Required) The 3D annotation to which this markup annotation applies. The 3D annotation may be specified as a child dictionary or as the name of a 3D annotation, as specified by its NM entry. In the latter case, the 3D annotation and the markup annotation shall be on the same page of the document.

3DV

dictionary

(Required) The 3D view that this markup annotation is associated with. The annotation will be hidden unless this view is currently being used for the 3D annotation specified by 3DA.

MD5

byte string

(Optional) A 16-byte string that contains the checksum of the bytes of the 3D stream data that this 3D comment shall be associated with. The checksum shall be calculated by applying the standard MD5 messagedigest algorithm (described in Internet RFC 1321) to the bytes of the stream data. This value shall be used to determine if artwork data has changed since this 3D comment was created. NOTE

This is strictly a checksum, and is not used for security purposes.

In a Markup3D ExData dictionary, the 3DA entry identifies the 3D annotation to which the markup shall be associated. Even though the markup annotation exists alongside the associated annotation in the page’s Annots array, the markup may be thought of as a child of the 3DA annotation. The 3DV entry specifies the markup’s associated 3D view. The markup shall only be printed and displayed when the specified view is the current view of its parent 3D annotation. This ensures that the proper context is preserved when the markup is displayed. NOTE

An equivalent view is not sufficient; if more than one markup specify equivalent views represented by different objects, the markups will not display simultaneously.

The MD5 entry gives interactive PDF processors a means to detect whether or not the 3D stream of the 3D annotation specified by 3DA has changed. If the 3D stream has changed, the context provided by the 3DV entry may no longer apply, and the markup may no longer be useful. Any action taken as a response to such a situation is dependent on the interactive PDF processor, but a warning shall be issued to the user. EXAMPLE

The following example shows how markup annotations can be associated with particular views. This example was corrected in this document (2020).

2 0 obj <<

%3D stream data with two named views /Type /3D /Subtype /U3D /VA [4 0 R 5 0 R] …

680

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

stream … endstream endobj 3 0 obj <<

%3D annotation /Type /Annot /Subtype /3D /3DD 2 0 R …

endobj 4 0 obj <<

%CommentView1 /Type /3DView /XN (CommentView1) …

endobj 5 0 obj <<

%CommentView2 /Type /3DView /XN (CommentView2) …

endobj 6 0 obj << /Type /Annot /Subtype /Polygon /IT /PolygonCloud …

endobj

%Cloud comment with no ExData

7 0 obj << /Type /Annot /Subtype /FreeText /IT /FreeTextCallout /ExData << /Type /ExData /Subtype /Markup3D /3DA 3 0 R /3DV 4 0 R

%Callout comment on CommentView1

…

endobj 8 0 obj <<

%Dimension comment on CommentView2 /Type /Annot /Subtype /Line /IT /LineDimension /ExData << /Type /ExData /Subtype /Markup3D /3DA 3 0 R /3DV 5 0 R

© ISO 2020 – All rights reserved

681

ISO 32000-2:2020(E)

…

endobj 9 0 obj <<

%Stamp comment on CommentView2 /Type /Annot /Subtype /Stamp /ExData << /Type /ExData /Subtype /Markup3D /3DA 3 0 R /3DV 5 0 R

…

endobj

The following illustrations show the placement of markup on annotations on different views of the same 3D artwork.

Figure 102 — 3D artwork set to its default view "Figure 102 — 3D artwork set to its default view" shows the default view, which has no markup annotations.

Figure 103 — 3D artwork set to CommentView1 "Figure 103 — 3D artwork set to CommentView1" shows another view to which a markup annotation is applied. 682

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Figure 104 — 3D artwork set to CommentView2 "Figure 104 — 3D artwork set to CommentView2" shows a view referenced by two markup annotations: •

A line annotation (/Subtype /Line) with a line dimension intent (/IT/ LineDimension)

•

A stamp annotation (/Subtype /Stamp)

13.6.7

Persistence of 3D measurements and markups

13.6.7.1

General

Beginning with PDF 2.0, it is possible to add 3D measurement data to an instance of a 3D artwork. These measurement data are stored in a 3D measurement/markup dictionary. 3D measurements are associated with 3D views, and each 3D view is able to contain zero or more 3D measurement dictionaries. After a measurement is associated with view, it shall be visible only when that view is selected or active in an interactive PDF processor. As different views are displayed, the measurements associated with that view shall be made visible and previously displayed measurements become invisible. 3D measurements are either simple 3D markups used to add information to the geometric data shown in a view, or have an associated comment, in which case they have all the associated functionality of a comment. A 3D measurement is able to be promoted or demoted to or from comment status. There are three key aspects to defining persistent 3D measurements: •

A mechanism to define the units associated with the geometric data being measured. A 3DU entry in "Table 309 — Additional entries specific to a 3D annotation", has as its value a 3D units dictionary, which stores the units data for this 3D annotation. (See "Table 325 — Entries in a 3D units dictionary" for more information.)

•

The association between 3D measurements and 3D view is realised through the MA entry in a 3D view dictionary (see "Table 315 — Entries in a 3D view dictionary"). The value of this entry is an array of 3D measurement/markup dictionaries, where each dictionary represents an instance of a 3D measurement to be displayed in the context of this view. For more information about 3D measurement dictionaries, see 13.6.7.3, "3D measurement/markup dictionary".

•

When a 3D measurement is promoted to a comment, a projection annotation ("see 12.5.6.24, "Projection annotations") is created to manage the comment and its appearance in the comments list. An indirect reference to this projection annotation is placed in the 3D measurement dictionary. (See 13.6.7.3, "3D measurement/markup dictionary".)

© ISO 2020 – All rights reserved

683

ISO 32000-2:2020(E)

13.6.7.2

The 3D units dictionary

The data associated with a 3D artwork annotation may be defined in an arbitrary 3D coordinate system. For viewing purposes, the interactive PDF processor shall define a camera to map these coordinates onto a view surface. (3D coordinate systems are discussed in 13.6.5, "Coordinate systems for 3D".) For measurement purposes, distances are computed in this arbitrary coordinate system and assigned physical meaning by entries in the 3D units dictionary. These sets of optional units shall be defined: •

Creation time units: Units known at the time the 3D artwork annotation is created.

•

User override units: Units defined by the user after the annotation was created.

•

Display units: Units that the user would like used when displaying distances for all newly created measurements.

The first two definitions assign physical meaning to measured distances, and the third defines how the distances are presented. When a 3D annotation is created, the application may have information from external sources that allows it to determine the units of the data being imported. Later the user may want to either override that definition or control what units data are displayed in. In addition to defining the units, a scaling operation shall be defined that maps one set of units to another. For the creation time and user override units, the mapping states that "m model data units = n real units". For the display units, the mapping states that "m model units = n display units". In most cases, the m and n scale values shall be 1.0 because most data are defined in some well-known units system, such as meters or inches. The entries in the 3D units dictionary establish these mappings for each set of units (creation time, user override, and display units). The 3D Units dictionary is referenced in "Table 309 — Additional entries specific to a 3D annotation" as the value of the 3DU entry. Table 325 — Entries in a 3D units dictionary Key

Type

Value

TSm

number

(Optional; PDF 2.0) The creation time units m scale value. If omitted, TSm defaults to 1.0; if included, TU shall exist.

TSn

number

(Optional; PDF 2.0) The creation time units n scale value. If omitted, TSn defaults to 1.0; if included, TU shall exist.

TU

text string

(Optional; PDF 2.0) The creation time units value. A text string specifying a label for displaying the units represented by this dictionary in a user interface. NOTE 1 It is recommended that the label use a universally recognised abbreviation.

684

USm

number

(Optional; PDF 2.0) The user defined units m scale value. If omitted, USm defaults to 1.0; if included, UU shall exist.

USn

number

(Optional; PDF 2.0) The user defined units n scale value. If omitted, USn defaults to 1.0; if included, UU shall exist.

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Key

Type

Value

UU

text string

(Optional; PDF 2.0) The user override units value. A text string specifying a label for displaying the units represented by this dictionary in a user interface. NOTE 2 It is recommended that the label use a universally recognised abbreviation.

DSm

number

(Optional; PDF 2.0) The display units m scale value. If omitted, DSm defaults to 1.0; if included, DU shall exist.

DSn

number

(Optional; PDF 2.0) The display units n scale value. If omitted, DSn defaults to 1.0; if included, DU shall exist.

DU

text string

(Optional; PDF 2.0) The display units value. A text string specifying a label for displaying the units represented by this dictionary in a user interface. NOTE 3 It is recommended that the label use a universally recognised abbreviation.

The following algorithm shall be used to map model space distances for display in 3D measurements for each of the three sets of units. Starting from these default values: n = 1.0 // a number m = 1.0 // a number Units = "Model Units"

// a text string

In the algorithm that follows, an entry is defined if it is included in the 3D Units dictionary. Creation time units – The following is the process creation time units definition: If TU is defined, then Units = TU If TSm is defined, then m = TSm If TSn is defined, then n = TSn If either TSm or TSn is defined, TU should be included in the 3D Units dictionary; if TU is not defined in this case, the unit specification is undefined and shall be ignored. User override units – The following is the process user override units definition: If UU is defined, then Units = UU If USm is defined, then m = USm If USn is defined, then n = USn If either USm or USn is defined, UU should be included in the 3D Units dictionary; if UU is not defined in this case, the unit specification is undefined and is ignored. © ISO 2020 – All rights reserved

685

ISO 32000-2:2020(E)

Display units – The following is the display units definition: If DU is defined, then Units = DU If DSm is defined, then m = m × DSm If DSn is defined, then n = n × DSn If either DSm or DSn is defined, DU should be included in the 3D Units dictionary; if DU is not defined in this case, the unit specification is undefined and is ignored. Finally, if X is a model space distance and Y is the displayed value, the functional relationship between X and Y is given by the equation Y Units = (m/n) × X.

13.6.7.3

3D measurement/markup dictionary

13.6.7.3.1

General

The MA entry of "Table 315 — Entries in a 3D view dictionary" contains an array of 3D measurement dictionaries, where each dictionary represents an instance of a 3D measurement to be displayed in the context of this view. Each 3D measurement dictionary describes the type of the 3D measurement through the Subtype entry, as well as provides a name for the measurement as it may appear in the user interface of an colour PDF processor. The entries of the 3D Measurement/Markup dictionary are described in "Table 326 — Entries in a 3D measurement/markup dictionary common to all markup subtypes". Table 326 — Entries in a 3D measurement/markup dictionary common to all markup subtypes

686

Key

Type

Value

Type

name

(Optional; PDF 2.0) The type of PDF object that this dictionary describes; if present, it shall be 3DMeasure for a 3D measurement dictionary.

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Key

Type

Value

Subtype name

(Required; PDF 2.0) A name specifying the measurement type for this measurement which shall be chosen from the following: LD3 A linear dimension measurement is used to denote the distance between two arbitrary points on a 3D model. See 13.6.7.3.2, "3D linear dimension measurement" for a listing of additional entries in this dictionary. PD3 A perpendicular dimension measurement is used to denote the perpendicular distance between two geometric entities (normally two lines or a point and a line). See "Table 328 — Additional entries in a 3D measurement/markup dictionary for a 3D perpendicular dimension measurement" for a listing of additional entries in this dictionary. AD3 An angular dimension measurement is used to denote the angle between two linear entities. See "Table 329 — Additional entries in a 3D measurement/markup dictionary for a 3D angular dimension measurement" for a listing of additional entries in this dictionary. RD3 A radial dimension measurement is used to define the radius or diameter of a circular 3D entity. See "Table 330 — Additional entries in a 3D measurement/markup dictionary for a 3D radial dimension measurement" for a listing of additional entries in this dictionary. 3DC A 3D comment note lets users connect a comment to a specific piece of geometry in the 3D model. See "Table 331 — Additional entries in a 3D measurement/markup dictionary for a 3D comment note" for a listing of additional entries in this dictionary.

TRL

(Optional; PDF 2.0) A name string that may be associated with a measurement markup. If omitted, an interactive PDF processor may create one. Interactive PDF processors that do not provide a user interface for such elements should ignore this field.

text string

The TRL field contains the current name for the measurement markup. Each measurement markup is assigned a name ("Measurement 1", "3D Comment 22", … and so on) when it is created. These names may be shown by an interactive PDF processor so that users can see what measurements are associated with what views. Users should be allowed to override the initially defined names.

13.6.7.3.2

3D linear dimension measurement

A 3D linear measurement is a markup showing the distance between two arbitrary points on a 3D model. "Figure 105 — 3D linear measurement" shows an example.

© ISO 2020 – All rights reserved

687

ISO 32000-2:2020(E)

Figure 105 — 3D linear measurement As shown, a 3D linear measurement consists of two filled circles, called anchor points, one at each of the two positions being measured, and a line with an arrowhead on each end connecting the two anchor points (referred to as the measure line). This line is then labelled with a value representing the distance between the two anchor points. In addition to the entries in "Table 326 — Entries in a 3D measurement/markup dictionary common to all markup subtypes", "Table 327 — Additional entries in a 3D measurement/markup dictionary for a 3D linear dimension measurement" lists additional entries for a 3D measurement dictionary with a Subtype value of LD3 for 3D linear measurement. Table 327 — Additional entries in a 3D measurement/markup dictionary for a 3D linear dimension measurement Key

Type

Value

AP

array

(Required; PDF 2.0) A three-element array of numbers specifying the 3D annotation plane on which the measurement markup will lie.

A1

array

(Required; PDF 2.0) A three-element array of numbers specifying the model space position of the first anchor point in world space. NOTE 1 It is assumed that this is a position on the 3D model associated with this view.

N1

text string (Optional; PDF 2.0) The name of the part (or model tree node) associated with anchor point 1 (A1). The part name is used to verify that the part exists and is visible. If not, the measurement is not displayed. If omitted, no validation occurs.

A2

array

(Required; PDF 2.0) A three-element array of numbers specifying the model space position of the second anchor point in world space. NOTE 2 It is assumed that this is a position on the 3D model associated with this view.

688

N2

text string (Optional; PDF 2.0) The name of the part (or model tree node) associated with anchor point 2 (A2). The part name is used to verify that the part exists and is visible. If not, the measurement is not displayed. If omitted, no validation occurs.

TP

array

(Required; PDF 2.0) A three-element array of numbers specifying the text anchor point for the measurement value string.

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Key

Type

Value

TY

array

(Required; PDF 2.0) A three-element array of numbers specifying the up direction vector, called the text Y direction, for the text string presenting the measurement value string.

TS

number

(Optional; PDF 2.0) A number representing the measurement text string height defined in points in the default user space. The measurement text shall be zoom invariant. The default is 12 points.

C

array

(Optional; PDF 2.0) An array of three numbers in the range 0.0 to 1.0 that represent the DeviceRGB colour of the measurement markup. The default value is the array [1 1 1], representing the colour white.

V

number

(Required; PDF 2.0) A numeric value representing a measurement value. This value is converted to a text string and displayed as part of the measurement text string.

U

text string (Required; PDF 2.0) A text string, called the units string, which represents the units for the measurement.

P

integer

UT

text string (Optional; PDF 2.0) A string defined by the user that is appended to the end of the measurement value string. If omitted, no string is appended.

S

dictionary (Optional; PDF 2.0) A comment reference is an indirect reference to a projection annotation that may be associated with this 3D measurement. See 13.6.7.4, "3D measurements and projection annotations".

(Optional; PDF 2.0) The number of decimal digits, which represents the precision, shown for the measurement value (V). The default is 3, if P is not specified.

"Figure 106 — Parameters for a 3D linear measurement" depicts some of the parameters for a 3D linear measurement. The value text should be drawn on the annotation plane (AP) where the horizontal text path is defined by the vector from A1 to A2 with the text up direction defined by the vector TY. The lower left corner of the text box is positioned at the text anchor point (TP). NOTE 1

A PDF viewer can choose to display the text aligned to the viewing plane, if it makes more sense in a particular use such as printing a legend.

Figure 106 — Parameters for a 3D linear measurement © ISO 2020 – All rights reserved

689

ISO 32000-2:2020(E)

The actual Y-axis shall be formed by taking the cross product of AP and (A2 - A1). The vector TY shall be used only to determine the orientation of this Y-axis. If the text position TP is outside the area between A1 and A2, an extension line collinear to the measure line connecting TP to the closest anchor point is generated. There are three parts to the text string displayed with the measurement, a numeric value (V), a units string (U), and an optional user string (UT). The display of the numeric value field number is also controlled by the precision value (P), which indicates how many digits to display to the right of the decimal point. The viewer should convert the numeric value to a string and combine it with the units string and user text as appropriate. This process is viewer dependent.

13.6.7.3.3

3D perpendicular dimension measurement

A perpendicular measurement is used to denote the perpendicular distance between two geometric entities (normally two lines or a point and a line) as illustrated here.

Figure 107 — Perpendicular measurement "Figure 107 — Perpendicular measurement" shows a perpendicular measurement markup consists of two filled circles at the anchor points, two parallel extension lines (referred to as leader lines) starting at the anchor points and extending away from the anchor points. There is also a labelled line with arrowheads on both sides (referred to as the measure line) indicating that the distance shown is the perpendicular distance between the two parallel lines. In addition to the entries in "Table 326 — Entries in a 3D measurement/markup dictionary common to all markup subtypes", the following entries are defined for a I with a Subtype value of PD3 for 3D perpendicular measurement. Table 328 — Additional entries in a 3D measurement/markup dictionary for a 3D perpendicular dimension measurement Key

Type

Value

AP

array

(Required; PDF 2.0) A three-element array of numbers specifying the 3D annotation plane on which the measurement markup will lie.

A1

array

(Required; PDF 2.0) A three-element array of numbers specifying the model space position of the first anchor point in world space. NOTE 1 It is assumed that this is a position on the 3D model associated with this view.

690

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Key

Type

Value

N1

text string (Optional; PDF 2.0) The name of the part (or model tree node) associated with anchor point 1 (A1). The part name is used to verify that the part exists and is visible. If not, the measurement is not displayed. If omitted, no validation occurs.

A2

array

(Required; PDF 2.0) A three-element array of numbers specifying the model space position of the second anchor point in world space. NOTE 2 It is assumed that this is a position on the 3D model associated with this view.

N2

text string (Optional; PDF 2.0) The name of the part (or model tree node) associated with anchor point 2 (A2). The part name is used to verify that the part exists and is visible. If not, the measurement is not displayed. If omitted, no validation occurs.

D1

array

(Required; PDF 2.0) A three-element array of numbers specifying the direction vector for leader lines associated with the anchor points (A1 and A2).

TP

array

(Required; PDF 2.0) A three-element array of numbers specifying the text anchor point for the measurement value string.

TY

array

(Required; PDF 2.0) A three-element array of numbers specifying the up direction vector, called the text Y direction, for the text string presenting the measurement value string.

TS

number

(Optional; PDF 2.0) A number representing the measurement text string height defined in points in the default user space. The measurement text shall be zoom invariant. The default is 12 points.

C

array

(Optional; PDF 2.0) An array of three numbers in the range 0.0 to 1.0, representing the DeviceRGB colour of the measurement markup. The default value is the array [1 1 1], representing the colour white.

V

number

(Required; PDF 2.0) A numeric value representing a measurement value. This value is converted to a text string and displayed as part of the measurement text string.

U

text string (Required; PDF 2.0) A string, called the units string, representing the units for the measurement.

P

integer

UT

text string (Optional; PDF 2.0) A string defined by the user that is appended to the end of the measurement value string. If omitted, no string is appended.

S

dictionary (Optional; PDF 2.0) A comment reference is an indirect reference to a projection annotation that may be associated with this 3D measurement. See 13.6.7.4, "3D measurements and projection annotations".

(Optional; PDF 2.0) The number of decimal digits, which represents the precision, shown for the measurement value (V). The default is 3, if P is not specified.

© ISO 2020 – All rights reserved

691

ISO 32000-2:2020(E)

Figure 108 — Parameters associated with the perpendicular dimension "Figure 108 — Parameters associated with the perpendicular dimension" illustrates the parameters associated with the perpendicular dimension and shows the measure markup and parameters. All the markup items are drawn on the annotation plane (as defined by AP). The text layout is defined in a similar manner as for linear dimensions. The lower-left corner of the text box is positioned at the text anchor point (TP), and the text's X-axis is aligned with the measure line. The text will flow in the direction defined by a vector from A1 to A2. The text's up direction is defined as the cross product of the annotation plane normal and the text X-axis, in the direction defined by the TY parameter. In addition to controlling text position, the text anchor point (TP) also controls the lengths of the leader lines and the placement of the measure line. Because the leader lines are parallel and the measure line is required to be perpendicular to both leader lines, the intersection of the leader lines and the measure line is easily computed. If the text position TP is outside the area between A1 and A2, an extension line collinear to the measure line connecting TP to the closest anchor point is generated. There are three parts to the text string displayed with the measurement: a numeric value (V), a units string (U), and an optional user string (UT). The display of the numeric value field number is also controlled by the precision value (P), which indicates how many digits to display to the right of the decimal point. The viewer should convert the numeric value to a string and combine it with the units string and user text as appropriate. This process is viewer dependent.

13.6.7.3.4

3D angular dimension measurement

An angular measurement is used to denote the angle between two linear entities, as shown in "Figure 109 — 3D Angular Dimension Measurement".

Figure 109 — 3D Angular Dimension Measurement "Figure 109 — 3D Angular Dimension Measurement" shows an angular measurement markup consisting of two anchor points, one located on each of the two linear entities whose angle is being measured. Connected to each anchor point is an extension line that is collinear with the edge it 692

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

measures. A labelled arc, with an arrowhead at each end, connects the two extension lines, making it clear which angle is being measured. In addition to the entries in "Table 326 — Entries in a 3D measurement/markup dictionary common to all markup subtypes", "Table 329 — Additional entries in a 3D measurement/markup dictionary for a 3D angular dimension measurement" lists entries defined for a 3D measurement dictionary with a Subtype value of AD3 for 3D angular measurement. Table 329 — Additional entries in a 3D measurement/markup dictionary for a 3D angular dimension measurement Key

Type

Value

AP

array

(Required; PDF 2.0) A three-element array of numbers specifying the 3D annotation plane on which the measurement markup lies.

A1

array

(Required; PDF 2.0) A three-element array of numbers specifying the model space position of the first anchor point in world space. NOTE 1 It is assumed that this is a position on the 3D model associated with this view.

D1

array

(Required; PDF 2.0) A three-element array of numbers specifying the direction vector for the leader line associated with the first anchor point (A1).

N1

text string

(Optional; PDF 2.0) The name of the part (or model tree node) associated with anchor point 1 (A1). The part name is used to verify that the part exists and is visible. If not, the measurement is not displayed. If omitted, no validation occurs.

A2

array

(Required; PDF 2.0) A three-element array of numbers specifying the model space position of the second anchor point in world space. NOTE 2 It is assumed that this is a position on the 3D model associated with this view.

D2

array

(Required; PDF 2.0) A three-element array of numbers specifying the direction vector for the leader line associated with the second anchor point (A2).

N2

text string

(Optional; PDF 2.0) The name of the part (or model tree node) associated with anchor point 2 (A2). The part name is used to verify that the part exists and is visible. If not, the measurement is not displayed. If omitted, no validation occurs.

TP

array

(Required; PDF 2.0) A three-element array of numbers specifying the text anchor point for the measurement value string.

TX

array

(Required; PDF 2.0) A three-element array of numbers specifying the horizontal direction vector for the text string presenting the measurement value string.

TY

array

(Required; PDF 2.0) A three-element array of numbers specifying the up direction vector, called the text Y direction, for the text string presenting the measurement value string.

© ISO 2020 – All rights reserved

693

ISO 32000-2:2020(E)

Key

Type

Value

TS

number

(Optional; PDF 2.0) A number representing the measurement text string height defined in points in the default user space. The measurement text shall be zoom invariant. The default is 12 points.

C

array

(Optional; PDF 2.0) An array of three numbers in the range 0.0 to 1.0, representing the DeviceRGB colour of the measurement markup. The default value is the array [1 1 1], representing the colour white.

V

number

(Required; PDF 2.0) A numeric value representing a measurement value. This value is converted to a text string and displayed as part of the measurement text string.

P

integer

(Optional; PDF 2.0) The number of decimal digits, which represents the precision, shown for the measurement value (V). The default is 3, if P is not specified.

UT

text string

(Optional; PDF 2.0) A text string defined by the user that is appended to the end of measurement value string. If omitted, no string is appended.

DR

boolean

(Optional; PDF 2.0) A flag that indicates whether degrees or radians are shown in angular measurements. If DR is true, angular measurements are shown in degrees. The default is true.

S

dictionary

(Optional; PDF 2.0) A comment reference is an indirect reference to a projection annotation that may be associated with this 3D measurement. See 13.6.7.4, "3D measurements and projection annotations".

The key geometric parameters for an angular dimension are shown in "Figure 110 — Geometric parameters for an angular dimension".

Figure 110 — Geometric parameters for an angular dimension The angle is defined by the measurement value V (30 in "Figure 110 — Geometric parameters for an angular dimension") and is the angle between the leader direction vectors (D1 and D2). The angular measurement markup is generated by first computing the centre point of the angle, cp in this figure. The text position (TP) controls the position of the measurement text, the placement of the angle arc, and the length and direction of the extension lines. The extension lines are drawn from the anchor point to a point at a distance ||TP-cp|| from the centre point cp along the associated direction vector, 694 © ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

which is the intersection of the angle arc and the extension line. The angle arc centre is at the centre point cp (and its radius is ||TP - cp||) and is drawn between the two extensions lines. The markup text is displayed (based on the text orientation parameters) with the lower-left corner of the text string starting at the text position (TP). The text layout is defined in a similar manner as for other dimensions. The lower-left corner of the text box is positioned at the text anchor point (TP), and the text's X-axis is defined by the vector TX. Note that the vector TX is expected to be orthogonal with the annotation plane normal. The text's up direction is defined as the cross product of the annotation plane normal and the text X-axis, in the direction defined by the TY parameter. The measurement value is interpreted as either being in degrees or radians as defined by the (DR) value, and the appropriate label string is created. There are three parts to the text string displayed with the measurement: a numeric value (V), a degrees or radians string (U), and an optional user string (UT). The display of the numeric value field number is also controlled by the precision value (P), which indicates how many digits to display to the right of the decimal point. The viewer should convert the numeric value to a string and combine it with the degrees or radians string and user text as appropriate. This process is viewer dependent. There are some special cases: •

Parallel direction vectors (D1 and D2) are invalid, and no markup is generated.

•

If the text position TP is outside the cone of the angle, an extension line is added to connect the text with the angle arc.

13.6.7.3.5

3D radial dimension

The radial measurement is used to define the radius or diameter of a circular 3D entity. "Figure 111 — 3D Radial Dimension" illustrates two examples of a radial dimension.

Figure 111 — 3D Radial Dimension As shown on the left, the basic markup for a radial dimension consists of an arrow pointing to a circle or arc that is connected to a leader line and text label that defines the radius or diameter. If the arrow is positioned such that it is off the underlying arc, as in the figure on the right, an extension arc is generated that clarifies which arc is being measured. For radius measurements, the measure value is preceded by an "R" in the measure string. For diameter values, the measure value is preceded by the diameter symbol (⌀).

© ISO 2020 – All rights reserved

695

ISO 32000-2:2020(E)

In addition to the entries in "Table 326 — Entries in a 3D measurement/markup dictionary common to all markup subtypes", "Table 330 — Additional entries in a 3D measurement/markup dictionary for a 3D radial dimension measurement" lists entries defined for a 3D measurement dictionary with a Subtype value of RD3 for 3D radial measurement. Table 330 — Additional entries in a 3D measurement/markup dictionary for a 3D radial dimension measurement Key Type

Value

AP

array

(Required; PDF 2.0) A three-element array of numbers specifying the 3D annotation plane on which the measurement markup lies.

A1

array

(Required; PDF 2.0) A three-element array of numbers specifying the model space position of the first anchor point, called the circle centre point, in world space. NOTE 1 It is assumed that this is a position on the 3D model associated with this view.

A2

array

(Required; PDF 2.0) A three-element array of numbers specifying the model space position of the second anchor point, which is a point on the arc, in world space. NOTE 2 It is assumed that this is a position on the 3D model associated with this view.

N2

text string (Optional; PDF 2.0) The name of the part (or model tree node) associated with anchor point 2 (A2). The part name is used to verify that the part exists and is visible. If not, the measurement is not displayed. If omitted, no validation occurs.

A3

array

(Required for arcs only; PDF 2.0) A three-element array of numbers that defines the start of the arc being measured. This entry is required if the geometry being measured is an arc. See "Figure 113 — Defining a radial dimension for an arc" for a visual representation of A3.

A4

array

(Required for arcs only; PDF 2.0) A three-element array of numbers that defines the end of the arc being measured. This entry is required if the geometry being measured is an arc. See "Figure 113 — Defining a radial dimension for an arc" for a visual representation of A4.

TP

array

(Required; PDF 2.0) A three-element array of numbers specifying the text anchor point for the measurement value string.

TX

array

(Required; PDF 2.0) A three-element array of numbers specifying the horizontal direction vector for the text string presenting the measurement value string.

TY

array

(Required; PDF 2.0) A three-element array of numbers specifying the up direction vector for the text string presenting the measurement value string.

EL

number

(Optional; PDF 2.0) The length of the extension line in points. The default is 60 points.

TS

number

(Optional; PDF 2.0) A number representing the measurement text string height defined in points in the default user space. The measurement text shall be zoom invariant. The default is 12 points.

C

array

(Optional; PDF 2.0) An array of three numbers in the range 0.0 to 1.0, representing the DeviceRGB colour of the measurement markup. The default value is the array [1 1 1], representing the colour white.

696

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Key Type

Value

V

number

(Required; PDF 2.0) A numeric value representing a measurement value. This value is converted to a text string and displayed as part of the measurement text string.

U

text string (Required; PDF 2.0) A string representing the units for the measurement.

P

integer

UT

text string (Optional; PDF 2.0) A string defined by the user that is appended to the end of measurement value string. If omitted, no string is appended.

SC

boolean

(Optional; PDF 2.0) A flag that indicates whether the underlying circle, or arc, is shown or not. If true, the underlying circle associated with a radial dimension is displayed. The circle or arc shall be redrawn in the markup colour (C). The default is false, not to show the circle.

R

boolean

(Optional; PDF 2.0) A flag that indicates whether the measurement value is for a radius or a diameter. If true, the measurement value associated with a radial measurement represents a radius, as opposed to a diameter value. The default is true, the measurement value represents a radius.

S

dictionary (Optional; PDF 2.0) A comment reference is an indirect reference to a projection annotation that may be associated with this 3D measurement. See 13.6.7.4, "3D measurements and projection annotations".

(Optional; PDF 2.0) The number of decimal digits, which represents the precision, shown for the measurement value (V). The default is 3, if P is not specified.

The parameters for defining the radial measurement for a circle are shown in "Figure 112 — Defining the radial measurement for a circle".

Figure 112 — Defining the radial measurement for a circle The circle being measured is defined by two points lying on the annotation plane, a circle centre A1, and a point on the circle A2. For radial measurement, the text position (TP) controls the text string position, the arrow line orientation, and the extension line. The arrow line is drawn from the text position (TP) to the intersection point between the circle and a line from text position to the circle centre. The extension line will be drawn from the text position (TP) in the direction of the text string's X-axis (TX). The length of the extension line is defined by the EL parameter. The left centre of measure value string will begin at the end of the extension line. Note that the vector TX is expected to be orthogonal with the annotation plane normal. The text's up direction is defined as the cross product of the annotation plane normal and the text X-axis, in the direction defined by the TY parameter. © ISO 2020 – All rights reserved

697

ISO 32000-2:2020(E)

The parameters for defining a radial dimension for an arc are very similar, as shown in "Figure 113 — Defining a radial dimension for an arc".

Figure 113 — Defining a radial dimension for an arc There are three parts to the text string displayed with the measurement: a numeric value (V), a units string (U), and an optional user string (UT). The display of the numeric value field number is also controlled by the precision value (P), which indicates how many digits to display to the right of the decimal point. The viewer should convert the numeric value to a string and combine it with the units string and user text as appropriate. This process is viewer dependent.

13.6.7.3.6

3D comment note

3D comment notes let users connect a comment to a specific piece of geometry in the 3D model. The markup consists of a leader line that connects the model to a text box placed in the 3D scene. The text box is rendered so that the text is always facing the user. Commenting functionality is specified by creating a projection annotation that represents the 3D measurement/ markup within the commenting system. See 13.6.7.4, "3D measurements and projection annotations" for additional details. In addition to the entries in "Table 326 — Entries in a 3D measurement/markup dictionary common to all markup subtypes", "Table 331 — Additional entries in a 3D measurement/markup dictionary for a 3D comment note" lists entries defined for a 3D measurement dictionary with a Subtype value of 3DC for 3D comment notes. Table 331 — Additional entries in a 3D measurement/markup dictionary for a 3D comment note Key

Type

Value

A1

array

(Required; PDF 2.0) A three-element array of numbers specifying the model space position of the first anchor point in world space. NOTE

N1

698

text string

It is assumed that this is a position on the 3D model associated with this view.

(Optional; PDF 2.0) The name of the part (or model tree node) associated with anchor point 1 (A1). The part name is used to verify that the part exists and is visible. If not, the measurement is not displayed. If omitted, no validation occurs.

© ISO 2020 – All rights reserved

ISO 32000-2:2020(E)

Key

Type

Value

TP

array

(Required; PDF 2.0) A three-element array of numbers specifying the text anchor point for the measurement value string.

TB

array

(Optional; PDF 2.0) A two-element integer array defining the x and y size of the text box to contain the user text string (UT). The x value is defined as a number of characters shown in the x direction (the top row); the y value is the number of rows of text. The interactive PDF processor is free to flow the text in the text box as appropriate. If the entire string does not fit, it may be truncated. The interactive PDF processor may also choose any font in which to render the content, though a monospaced font is recommended.

TS

number

(Optional; PDF 2.0) The text size – a number representing the measurement text string height defined in points in the default user space. The measurement text shall be zoom invariant. Default value: 12.

C

array

(Optional; PDF 2.0) An array of three numbers in the range 0.0 to 1.0, representing the DeviceRGB colour of the measurement markup. The default value is the array [1 1 1], representing the colour white.

UT

text string

(Optional; PDF 2.0) The text string displayed as the contents of the 3D comment note.

S

dictionary

(Optional; PDF 2.0) A comment reference is an indirect reference to a projection annotation that may be associated with this 3D measurement. See "Table 341 — Entries in a RichMediaContent dictionary".

The first anchor point (A1) defines the connection to the model. The model space text position TP field defines placement of the corner of the text box that lies closest to anchor point 1 (A1) in the current view. The user string field contains the text to be fitted into the text box.

13.6.7.4

3D measurements and projection annotations

Associations between a 3D measurement and a projection annotation are created by defining an indirect reference to a dictionary in both the projection annotation and the 3D measurement. •

Projection annotation: When the projection annotation (see 12.5.6.24, "Projection annotations") is created, the ExData entry (an external data dictionary) is defined and used to manage the association between the 3D measurement and the comment. "Table 332 — Entries in the external data dictionary of a projection annotation" describes the entries in the external data dictionary of the projection annotation that are used for referencing a 3D measurement.

•

3D measurement: The value of the S entry in the 3D measurement dictionary is an indirect reference to a projection annotation dictionary of the associated comment. Table 332 — Entries in the external data dictionary of a projection annotation Key

Type

Value

Type

name

(Required; PDF 2.0) The type of PDF object that this dictionary describes; if present, shall be ExData for an external data dictionary.

Subtype

name

(Required; PDF 2.0) The type of external data that this dictionary describes; shall be 3DM for an association to a 3D measurement.

© ISO 2020 – All rights reserved

699

ISO 32000-2:2020(E)

Key

Type

Value

M3DREF

dictionary (Required; PDF 2.0) An indirect reference to a 3D measurement dictionary for which this projection annotation is a comment. See 12.5.6.24, "Projection annotations".


Navigation: PDF20-Spec-13-Alternate | PDF20-Spec-Index | PDF20-Spec-13-Rich-Media

Clone this wiki locally