คู่มือผู้ใช้ ยกเลิก

Triggering and controlling puppets

Triggers are created to control how groups and layers function by showing or hiding them when a key is pressed. You can create a diverse range of triggers, including hand positions, looping fireballs, and blink cycles to control your puppets. 

For a tutorial about controlling a character with triggers, click here.

Triggers behavior and Trigger panel

The Triggers behavior is applied by default to new puppets. It allows you to trigger artwork and setup custom-named triggers that can reference layers in different groups. These named triggers are listed in the Triggers panel, where you can assign a key to a trigger, view the list of layers controlled by a trigger, and even associate a MIDI note to trigger artwork using a connected MIDI device. 

Trigger panel
Trigger panel

There are two types of triggers: 
• Individual triggers – These hide layers by default, but show them when a key is pressed or MIDI note/controller is run, such as pressing H to show a hat on a character. 
• Swap Sets – These show only one trigger at a time, such as for different hand gestures. The set of triggers is associated with a group of layers in a puppet. Each trigger in the set has its own trigger key or MIDI note, and one of the triggers can be a default.

Clicking the name of a layer associated with a trigger reveals that layer in the Puppet panel. If you want to show a layer or group in a puppet without affecting any other layers or groups, use an individual trigger. If you want that layer or group to also hide other layers or groups (for example, pressing B to show the Blink layer in a group that also has Pupil and Eyeball layers), use a swap set.

Note: The deprecated Keyboard Triggers behavior continues to work, but if you want to use the new Triggers panel and don’t have any older Keyboard Triggers recordings that you have to keep, replace it with Triggers.

Creating and editing triggers

The Triggers panel is open by default in the Rig workspace. You can also open or close it using the Window > Triggers menu command.

Create an individual trigger that shows a puppet layer

Do any one of the following:
• Click in the trigger column (  ) for a puppet layer that doesn’t already have a trigger assigned to it (no icon in that column), then choose Create Trigger.

• Right-click the layer in the Puppet panel, then choose Create Trigger.

• Drag the layer from the Puppet panel and drop it into the Triggers panel.

Drop the layer onto a swap set to add it to that swap set. Drop it elsewhere to create an individual trigger.

• Click the Add (+) button in the Triggers panel, then choose Create Trigger to an empty trigger. Then, drag or add puppet layers to it.

Triggers with problems (key conflicts, no layers, etc) are displayed in orange. Hover your mouse over the trigger to see details. The tooltip also describes the lack of layers.

Create a Swap Set of Triggers

Do any one of the following:
• Click in the trigger column (  ) for a puppet group that doesn’t already have a swap set of triggers assigned to its layers (no icons in that column), then choose Create Swap Set. 

• Right-click a group of layers in the Puppet panel, then choose Create Swap Set.

• Click the Add (+) button in the Triggers panel, choose Create Swap Set, then drag individual triggers or puppet layers (that you want as individual triggers) into it.

A new set of triggers, each named after the selected layers, is created in the Triggers panel. If any puppet layers in the group are visible, the topmost one becomes the default trigger in the swap set. You can rename the swap set and choose not to have a default trigger.

Assign labels to Triggers

Assign label colors to Triggers to easily identify related triggers or swap sets in the Triggers panel. You can even filter the Triggers panel to show triggers and swap sets with matching colors.

Triggers with assigned labels

Select one or more triggers or swap sets > right-click above one of them > choose from the list of label colors. Set to None for no label. No label is assigned by default.

Right-click above the trigger or swap set with the label color, then choose Select Label Group.

Click in the Trigger panel’s search filter field > type label:color (e.g., label:re to show items with either a Red or Green label).

Set default triggers

To make a specific trigger in a swap set the default, do any of the following:
• Select the trigger, then choose the Default option at the bottom of the panel.
• Click the trigger icon next to the trigger’s name.
• Double-click the trigger’s name.
The default trigger is identified with a brighter and filled-in icon and brighter name. If you don’t want any layers triggered by default, repeat the step above to toggle the Default option.

Assign a layer or group to an existing trigger

To assign a layer or group to an existing trigger, do either of the following:
• Right-click the layer or group in the Puppet panel, choose  Add to Trigger,  and then choose the specific trigger from the context menu.
• Drag the layer or group onto the trigger in the Triggers panel.

Configure invoke trigger settings

To change how to invoke the trigger, select the trigger in the Triggers panel, then do any of the following:

  • Enter a key in the keyboard column.
  • Click in the MIDI Note field, then either tap the key on your MIDI device or enter its MIDI note number.
  • To make the trigger latch so that you don’t have to hold the keyboard or MIDI key to keep it triggered, enable the Latch option at the bottom of the panel.
  • Adding a layer or replay to an existing trigger selects the target trigger in the Triggers panel.

Assigning keys and MIDI notes to triggers can also be done more directly in the Layout mode of the Controls panel. For more information, see Layout mode.

Rename, rearrange, or combine a trigger or swap set

To rename a trigger or swap set, select it in the Triggers panel > Enter (on the main keyboard, not numeric keypad) and type the new name. To accept the change, press Enter or click away from the text field. Press Esc instead to cancel your edits.

To rearrange triggers and moving them within, into, or out of swap sets, select one or more triggers, and drag them in the panel. Dragging a swap set onto another set combines their triggers into a single swap set. Rearranging triggers in a swap set is also useful when you want to set the priority of triggers based on listed order.

To combine triggered layers, drag one trigger onto another trigger. The dropped trigger’s layers get reassigned to the target trigger. The dropped trigger is then deleted.

To combine the triggers from one swap set into another swap set, drag the swap set onto or into another swap set. The dropped swap set’s triggers are added to the target swap set. The target swap set’s default trigger stays the default.

 

หมายเหตุ:

If you make a puppet group shareable, any triggers assigned to the group’s layers moves to the shared puppet. Any controls for those triggers (shown in the Controls panel) are still associated with the parent puppet, and not the shared puppet. You can generate controls for the shared puppet’s triggers.

View or reveal triggers

To view or reveal the triggers associated with a layer in a puppet, do any of the following:

• Hover over the trigger icon in the layer’s row in the Puppet panel. The list of triggers (and any trigger keys) that shows the layer appear in a tooltip.
• Click the trigger icon in the layer’s row to reveal the trigger in the Triggers panel.
• If a layer is assigned to multiple triggers, click the trigger icon with arrow in the layer’s row, then select the specific trigger to reveal in the Triggers panel.

Tip: Clicking the eyeball on for a layer (in the Puppet panel) associated with a trigger in a swap set automatically turns off eyeballs for other triggered layers in the swap set. Use Option-/Alt-click to override automatic eyeball switching.

Configure behavior of triggers when multiple triggers are invoked

To change how triggers in a swap set behave when multiple triggers are invoked at the same time, select the swap set, then set Priority to either Most Recent to favor the recently used trigger, or Listed Order to favor the topmost listed trigger in the Triggers panel. The favored trigger’s layers shows.

Remove layers

To remove layers associated with a trigger, select the trigger in the Triggers panel, then click the ‘x’ next to the layers to remove at the bottom of the panel.

Note: Removing all layers associated with a trigger does not automatically delete the trigger.

Delete a trigger or swap set

To delete a trigger or swap set, select it, then choose Edit > Delete (Delete or Backspace).

หมายเหตุ:

Behaviors like Head & Body Turner, Lip Sync, Motion Trigger, and Face (for eye blinks) trigger layers separate from the Triggers behavior. If you want to use those four behaviors with Trigger-triggered layers in the same puppet group, set the Hide Others in Group option to the layers not being triggered by those four behaviors. Using that option, the layer order determines priority. Otherwise, change the structure in the artwork file.

Copy triggers between puppets

หมายเหตุ:

You can copy triggers from one puppet and paste it to another puppet with swap sets and triggers matching the same names. Copy these swap sets and triggers from the original puppet before the takes are recorded for those triggers. Otherwise, the pasted triggers won’t work.

To set up trigger compatibility between puppets, follow these steps:

  1. Select the puppet to copy the triggers from. From the Triggers panel, select the swap sets and triggers to copy.

  2. To copy the triggers, choose Edit > Copy. To move swap sets or triggers between puppets, choose Edit > Cut.

  3. Select the puppet you want to copy these swap sets or triggers to .

  4. With the Triggers panel focused, choose Edit > Paste.

The pasted swap sets and triggers appear at the bottom of the triggers list. You can move them if you want. You can now copy any recording of triggers between these two puppets.

If you have created Keyboard triggers before the October 2017 version, you can convert Keyboard Triggers to Triggers in order to take advantage of the more flexible triggering capability and use of the Controls panel. Note that existing projects and .puppet files that use Keyboard Triggers behavior continues to work.

For Triggers based puppets, use the Triggers or Controls panel to view all assigned trigger keys for a puppet.

Controls panel: custom layout for puppet triggers and behavior parameters 

Use the Controls panel to get a visual interface or dashboard where you can access triggers or supported behavior parameters for a puppet. Choose the triggers and behavior parameters (numerical and angular values) that you want easy access to, and control them from a single location. These custom controls are then associated with the puppet. These controls can also be shared with others as part of an exported puppet.

The Controls panel is open by default in the Record and Stream workspaces, but you can open it using the Window > Controls menu command. The panel shows the controls associated with the selected puppet in the Project or Timeline panel, or opened puppet in the Puppet panel.

There are two modes of the control panel:

  • Layout mode: here, you can customize the contents and appearance of the controls.
Layout mode
Layout mode

  • Perform mode: use the mode to use various controls by clicking the links at the top of the panel.
Perform mode
Perform mode

Layout mode

Triggers for a puppet can be visualized as clickable buttons with the artwork for each trigger on them. They also have any key or MIDI note associated with them. You can visualize the behavior parameters for a puppet as an adjustable slider or angle controls, and any MIDI notes associated with them. The layout is stored with the puppet, including when exporting to a .puppet file, enabling you to share trigger layouts with other people.

The following are the available controls under the Layout mode.

Add controls to the panel: select the puppet, and choose one of the following: 

  • If the panel is empty, click the Generate Controls for "puppet-name" link in the panel to create button controls based on the puppet’s triggers.
  • If triggers were recently added in the Triggers panel or you previously deleted some trigger controls, click the Refresh Controls button . This adds buttons for the additional triggers or previously deleted trigger controls.
  • When a puppet track is selected in the Timeline panel, drag the name of any numeric behavior parameter from the Properties panel into the Controls panel. You can also right-click above these parameters‘ names and choose Add to Controls Panel.

To create controls for specific triggers, do either of the following:

  • Select the triggers or swap sets in the Triggers panel, then drag them into the Controls panel.
  • Right-click above a trigger or swap set, then select Add to Controls Panel from the context menu.

Select or deselect multiple controls: do any of the following: 

  • Shift-click or Command/Ctrl-click the controls. 
  • Drag (marquee)-select around the controls. Hold down Shift or Command/Ctrl to toggle the selection of marquee-selected controls. 
  • Press Command/Ctrl+A to select all controls.
  • Press Shift+Command/Ctrl+A to deselect all controls.

Rearrange controls: do any of the following

  • Drag the selected controls in the panel. The dragged control can snap to a grid layout. 
  • Option-/Alt-click the Refresh Layout button to reflow the current controls based on the current size of the panel.

To assign a different key or MIDI control: select the control and tap the key or touch the MIDI control (button, slider, or knob) that you want to use. The control is the same as changing the key or MIDI note in the Triggers panel. Controls that are associated with a MIDI control appear in a green overlay in Layout mode.

To easily arm or disarm parameters without finding the controls in the Properties panel, use the Arm for Record button using the slider and knob controls for behavior parameters.

Note: The control is available only when a puppet track is selected.

Unassign the key or MIDI note/controller for a control: do either of the following:

  • Right-click the control and choose Remove Trigger Key, Remove MIDI Note, or Remove MIDI Controller (available for behavior parameter controls). 
  • Delete the contents of the MIDI Note field in the Triggers panel. 

Change the artwork on a button for a trigger associated with multiple puppet layers: right-click the button control and then a layer name.

Change the background color for the control (for improved contrast with dark artwork), right-click the control, then choose either Light or Dark. 

Change the range of values for a slider or angle parameter control: click or scrub the blue minimum (left side) and maximum (right side) values on the control. For example, if you added a Transform > Scale parameter, but don’t have to negative scaling, set the minimum value to 0. 

Remove controls: select them, then choose Edit > Delete (Delete or Backspace) or click the Delete Selected Controls button at the bottom of the panel. 

 

Custom artwork for button control

You can use custom artwork for button controls by creating it anywhere in the artwork file for a puppet. For selecting different artwork for buttons that have multiple layers assigned to its triggers, right-click a button and select the layer name at the top of the context menu.

If it affects the appearance of the puppet in the scene, turn off its eyeball.

  • To assign custom artwork to a button, drag the layer from the Puppet panel and drop it onto the button control.

Switch from Layout to Perform mode

To switch back to Perform mode, double-click away from any control in the Layout mode.
Tab is the default assigned shortcut to quickly switch between Layout and Perform modes. You can also assign a shortcut using the Window category for the Toggle Controls Panel Layout Mode command in the Keyboard Shortcut editor to assign a shortcut.

Perform mode

Click Perform to switch to Perform mode when you want to use the controls. You can click the button or press the assigned key or touch the assigned MIDI control to perform actions. 

Panning content

The contents of the Controls panel can be panned to view controls outside the viewable area.
To pan in the Controls panel, do any of the following:

  • Use the vertical or horizontal scroll bars.
  • Hold down the Option/Alt key or middle mouse button as you drag in the panel.
  • To scroll horizontally, spin the mouse wheel to scroll vertically, or hold down the Shift key as you spin the mouse wheel.

Rename behavior parameter controls

In the Controls panel, behavior parameters have controls named after their parameters. These can be renamed. Follow these steps:

  1. Switch the Controls panel to Layout mode.

  2. You can select the behavior parameter control and then press Return (macOS) or Enter (Windows), or right-click above a behavior parameter control and then choose Rename.

  3. Type in the name you wish to give and press Return/Enter or click away from the edit field.

Trigger audio

Make your puppets livelier with triggerable audio. You can play or record audio when a trigger is invoked by adding audio to the trigger.  For example, you can make a character yell when a yell facial expression is triggered.

To create triggerable audio from an audio file, follow these steps:

  1. Import the audio file into the project. For some sample audio files, click here.
  2. Drag the audio file onto a puppet in the Project panel.

This creates an audio replay that is assigned to a new trigger. You can assign a key to this trigger and use it either as a trigger or a replay. An audio replay (in the Replays section of the Properties panel) has a waveform icon next to its play button, and audio-specific settings at the bottom of the panel.

To include scene audio in a new replay and trigger, follow these steps:

  1. Select the audio tracks and the puppet takes to include in the replay.
  2. Right-click on a selected take or audio track, then choose the Create Replay and Trigger or Create Replay and Trigger in Swap Set command.

Playback audio triggers

Triggers with audio can be played back and recorded like any other trigger by assigning a key to it. When recorded, they appear as trigger bars in the Timeline panel, not as separate audio tracks. When those trigger bars are played back, the associated audio from the trigger’s replays are played back as well.

หมายเหตุ:

Audio associated with recorded triggers does not play back when scrubbing through time (i.e., audio scrubbing) and is not used when creating takes from scene audio (e.g., the Compute Lip Sync Take from Scene Audio command). Also, if you split the trigger bar that contains an audio replay, the audio starts from the beginning for each trigger bar – it doesn’t split the audio.

TIp: If you import a puppet with an audio replay whose source audio isn’t currently in the project, you can add it to the project by choosing Make Audio Shareable from the context menu for the audio replay

Fader: Fade a group on and off via trigger

You can use keyboard triggers to control the opacity of the puppet. You can use the behavior to show or hide a specific part of a puppet by fading the opacity of that part (a group) on or off by using a trigger (example; keyboard trigger).

Setup

Add the behavior to the specific group of a puppet that you want to fade in and out. The behavior isn’t applied by default to puppets. To get best results, avoid having Fader and Transform on the same group. You can also assign a trigger key for the group. Set the key to latch if you want to toggle fading in and out by tapping the key instead of holding it down. 

หมายเหตุ:

When a group containing overlapping layers is set to Normal blending mode, and the puppet is using Group Opacity, the layers are faded separately until the final opacity level. Workaround: Set the group’s opacity to 99.9%.

Control

Use the Duration parameter to control how fast (in seconds) opacity increases or decreases.

Editing Trigger takes

Takes recorded by starting triggers appears in the Timeline panel as trigger bars. You can easily edit the way you edit viseme bars.

You can reduce the vertical space in the Timeline panel used for take bars for triggers and visemes for a more compact user interface.

Editable trigger takes
Editable trigger takes

Listed below are the different parameters.

  • Select a trigger bar: click the middle or the edges of the bar. To select multiple bars, Shift-click, Command/Ctrl-click, or drag a marquee across the bars. 
  • Change the timing of a trigger bar: drag the left edge horizontally to adjust its start time, or drag its right edge for its end time. The left edge snaps to the playhead , or start, or end times for take bars. 
  • Switch to a different trigger in a swap set: right-click above the trigger bar, then choose from the other triggers in the set. 

Tip: If the playhead is parked above a trigger bar, either disarm the puppet or its Triggers behavior to see changes to a trigger. You can also scrub the playhead in time to see the change.

  • Insert a trigger take: right-click above a gap before, after, or between trigger bars, then choose from the available triggers. The new trigger bar starts at the time where you clicked. 
  • Split a trigger bar in two: select the trigger bar and then either choose Edit > Split (Command/Ctrl+Shift+D), which splits at the playhead , or press forward slash (/), which splits it in half. 
  • Delete trigger bars: select the trigger bars and either choose Edit > Delete (Delete or Backspace) or right-click above one of them and choose Delete.
     

To hide take bars for triggers and visemes, deselect the Show Trigger and Viseme Take Bars menu command.

Replays: Reusable and triggerable recordings

Trigger the recorded takes for a puppet, either live or for rerecording, using replays. For example, these reusable takes can be created to repeat different performances during a live stream or a specific eye gaze or arm gesture while recording. Some uses of a cycle puppet can instead be done via replay of a recorded performance. 

A replay represents specifically selected takes, and is associated with a trigger that you can assign a key or MIDI note to invoke them. Replays are also included when you export a puppet, letting you share recorded performances that others can trigger. 

Replays triggered during recording appear as multiple take bars. Replays triggered while using Smart replays appear as trigger bars enabling a a simpler, more compact, and easier-to-modify timeline. For more information, see Smart replays.

Create and edit replays

To create a replay and trigger, follow these steps:

  1. Select one or more take bars in the Timeline panel.

  2. Right-click a selected take, then choose a command that creates a replay and associates it with a trigger (a new trigger, a new trigger in an existing swap set, or an existing trigger).

The created replays for a puppet appear in the Replays section in the Properties  panel,  and show the duration of the replays. Created replays and their triggers are, by default, named after the behavior for those takes. If there are multiple takes for a behavior in a replay, the number of takes appears in parentheses after the behavior’s name. Use the search filter in the Properties panel to search for created replays.

Created replays
Created replays

The trigger for the replay appears in the Triggers panel, like triggers that show layers of a puppet. When a trigger is selected, the Layers and Replays section in the bottom section of the panel lists the associated puppet layers and replays. Clicking the name of a replay will reveal it in the Properties panel. 

A replay contains copies of the takes used to create it, so you can delete the original takes if needed. 

Replays that have problems are shown in orange. To view more information in a tooltip, hover over the orange icon or name. Replays not assigned to a trigger also appears in orange. When you hover over them, the tooltip says ’Replay has no trigger’.

You can also Create Hold Replays and Create Blended Hold Replay along with various other operations for a behavior parameter. To know more, see Behavior parameter menu.

Select or deselect replays

  • To select a single replay, click it.
  • To select a range of replays, click the first replay in the range, then Shift-click the last replay in the range.
  • To select or deselect individual replays, Command-click (macOS) or Ctrl-click (Windows) the replay.
  • To select all replays, press Command+A (macOS) or Ctrl+A (Windows).
  • To deselect all replays, press Command+Shift+A (macOS) or Ctrl+Shift+A (Windows).

Rename, reorder, delete, and add replays to a trigger

  • To rename a replay, select it in the Properties panel, either press Return (macOS) or Enter (Windows) or choose Rename from the context menu, change the name, then press Return/Enter or click away from the text field.
  • To reorder replays within the Replays list, select them, then drag a selected replay vertically. 
  • To delete replays, select them in the Properties panel, then press Delete. The original takes included in selected replays are not deleted.
  • To add replays to a trigger, select them in the Properties panel, then drag a selected replay and drop it in the Triggers panel. You can drop replays onto an existing trigger, away from a trigger to create a new trigger for each selected replay, or in a swap set to add them as triggers in the swap set.

Playing back and record replays

Replays are usually created with associated triggers (that can be invoked via key, MIDI note, or button control), but you can also use replays directly.

To play back a replay, do either of the following:

• Press the key, MIDI note, or button control (in the Controls panel) associated with the replay’s trigger.

• Click the Play button next to the replay’s name in the Properties panel.

The recorded takes in the replay playback, but the playhead doesn’t move. A small meter next to the replay’s name in the Properties panel shows the progress.

Tip: To cancel playback of a replay, move the playhead to a different time.

To record a replay, invoke the replay either before or after you start recording. Stop recording when done. 

หมายเหตุ:

Replays are ignored when using the Record 1-frame Take and Record 2-frame Take commands. 
However, you can copy selected Replays in the properties panel and paste them in the timeline.

Using replay triggers in swap sets

Replays can be associated with any trigger, including those in a swap set. If associated with the default trigger in a swap set, those replays will play back immediately.

Stop and sustain replays

By default, replays play back the entire duration of their recorded takes, but you can control playback to occur for as long as you trigger the replay.

หมายเหตุ:

This does not apply to takes that were created using Command+1, 2 or 3 that don't have edited viseme /trigger values. Those constant takes default to Stop/Sustain.

To control how a replay plays back, select it, then set the When Trigger Ends option to either of the following:

Let replay finish: The entire duration of the replay’s recorded takes plays back, regardless of how long you trigger the replay.

Stop / Sustain replay: Takes in the replay playback until you stop triggering it. If you continue triggering beyond the replay’s duration, the takes with the latest blend-out time are extended automatically. If you stop during a take that blends out, the take will blend out once trigger stops.

Smart replays:  Create simpler, more compact, and easier-to-modify replays

Smart replays simplify the way you view and edit replays in the timeline. Replays triggered during recording in new scenes now appear as trigger bars, instead of multiple take bars, for a simpler, more compact, and easier-to-modify timeline.

หมายเหตุ:

New scenes will have Smart Replays enabled by default. Existing scenes will not automatically have Smart Replays enabled since Smart replays change the way existing trigger takes with replays process animation.

Using Smart replays

Follow these steps to create smart replays:

  1. Select one or more take bars in the Timeline panel.

  2. Right-click on one of the selected take bars, then choose Create Replay and Trigger.

  3. Assign a Trigger Key (in the Triggers panel) or control button (in the Controls panel).

  4. To confirm that smart replays are enabled for your scene, select the scene in the Project panel and in the Properties panel, ensure that the Smart Replays option is checked.

  5. With Smart Replays enabled, record a performance using your new replay by following these steps:

    • Disarm (red circle button) all behaviors except Triggers. Select Record. Press the trigger’s key or control button for your replay. Select Stop.

Your recordings appear on the Timeline as consolidated smart replays.

Converting old or obsolete Keyboard Triggers to Triggers

หมายเหตุ:

The old keyboard column in the Puppet panel no longer exists. Edit the key for an obsolete trigger in the "Keyboard Triggers (obsolete)" section of the Properties panel. You can also change the Latch and Hide Others in Group settings. The Hide Others in Group setting can still work for trigger keys used by the Triggers behavior.

To convert a puppet from Keyboard Triggers to Triggers, follow these steps:

IMPORTANT: The following procedure removes existing Keyboard Triggers recordings.

  1. Select the puppet in the Project panel.

  2. Choose Puppet > Convert Obsolete Trigger Keys.

    The Triggers behavior replaces the Keyboard Triggers behavior. The existing trigger keys are converted to equivalent triggers in the Triggers panel.

  3. (Optional) Consolidate any unessential triggers in the Triggers panel by dragging one trigger on top of another.

    If you converted a .puppet file that was imported, export the puppet to a new .puppet file to retain these changes.

 Adobe

รับความช่วยเหลือได้เร็วและง่ายกว่าเดิม

หากคุณเป็นผู้ใช้ใหม่

Adobe MAX 2024

Adobe MAX
การประชุมความคิดสร้างสรรค์

14-16 ต.ค. Miami Beach และออนไลน์

Adobe MAX

การประชุมความคิดสร้างสรรค์

14-16 ต.ค. Miami Beach และออนไลน์

Adobe MAX 2024

Adobe MAX
การประชุมความคิดสร้างสรรค์

14-16 ต.ค. Miami Beach และออนไลน์

Adobe MAX

การประชุมความคิดสร้างสรรค์

14-16 ต.ค. Miami Beach และออนไลน์