FBX method for Video Mapping

Import a 3D model of the projection surface and set up Smode for Video Mapping.

fbxMethodVideoMapping fbxMethodVideoMapping fbxMethodVideoMapping fbxMethodVideoMapping

If you want to video project on a complex surface that is not easy to reproduce in Smode, you may want to import a 3D model of that surface directly into Smode.


Import a FBX model

Drag and drop a Scene3dFileGeometryGenerator Icon 3D File from the media directories to the RootStageElement Icon Stage and select Reference as Surface.

referenceAsSurface referenceAsSurface

To learn more about the limitations, refer to the Scene3dFileGeometryGenerator Icon 3D File documentation.

Select a Source for the content to display on that Surface Icon Surface :

sourceContent sourceContent


UV Mapping

How the content is projected onto the Surface depends on its UV map.

If you look at the ContentMap Icon Content Map in your ViewportWorkspaceComponent Icon Viewport , you will see the UV map of this Surface object directly in the ContentMap Icon Content Map .

UVonContentMap UVonContentMap

If this is not the way you want your content to be displayed, you can adapt the UV map to the content by using UV Modifier directly in the Surface Icon Surface in the RootStageElement Icon Stage .

There are 3 types of UV Modifiers:

  • UVMappingGeometryModifier Icon UV Mapping can do a simple remapping such as Perspective, Orthographic, Cylindrical or Spherical:

UVmapping UVmapping

For example, this is what Orthographic would look like:

orthographicUVmapping orthographicUVmapping

  • UVTransformGeometryModifier Icon UV Transform works exactly like a Transform2dTextureModifier Icon 2D Transform modifier but for the UV map of an object, such as translation, scale and rotation. For example, you can rotate the content 90 degrees like that:

90degreeTransform 90degreeTransform

  • UVCameraMappingGeometryModifier Icon UV Camera Mapping which will remap the UV of a mesh according to the point of view of a virtual CameraV9 Icon Camera or VideoProjector Icon Video Projector . This allows you to have the most coherent UV map according to the location from which you will see the projection without having to do everything by hand in another 3D modelling software.

UVcameraMapping UVcameraMapping


Create a VideoProjector Icon Video Projector in the RootStageElement Icon Stage

Virtual VideoProjector Icon Video Projector of Smode RootStageElement Icon Stage are used for real life mapping and usually directly connected to the VideoOutput Icon Video Output .

Right click in the RootStageElement Icon Stage section of the ElementTreeWorkspaceComponent Icon Element Tree to create one:

createVP createVP

When you create a new VideoProjector Icon Video Projector , you have to choose which Surface Icon Surface you want it to project on:

selectFBXSurface selectFBXSurface

Place it where your real Video Projector is in the real world:

VPplacement VPplacement


Understand the MapperTextureGenerator Icon Mapper Generator

Because, even with the most detailed 3D model, the stage never completely fit to the reality, you often need to adapt the projection. That’s what the MapperTextureGenerator Icon Mapper Generator lets you do.

It is automatically created in the ProcessorCompo Icon Processor of the VideoProjector Icon Video Projector with the content that will be projected as Input and the SurfaceMapperItem Icon Surface Mapper Item on which it will be projected:

mapper mapper

Note that if you create a new Surface Icon Surface but do not select the VideoProjector Icon Video Projector :

noVP noVP

When the Stage rendering options is set to Preview, you can see the content displayed on the new Surface Icon Surface that you just created:

contentPreview contentPreview

But if you set the Stage rendering options to Simulation, you see that the Surface Icon Surface is ignored by the VideoProjector Icon Video Projector and the content is only displayed on the imported Surface Icon Surface :

contentSimulation contentSimulation

The reason is that there is a SurfaceMapperItem Icon Surface Mapper Item for the imported Surface Icon Surface in the MapperTextureGenerator Icon Mapper Generator of the VideoProjector Icon Video Projector , but there is no SurfaceMapperItem Icon Surface Mapper Item for the new Smode Surface Icon Surface .

noMapperItem noMapperItem

In order for the VideoProjector Icon Video Projector to project on the Smode Surface Icon Surface , you need to create a new SurfaceMapperItem Icon Surface Mapper Item for it. To do so, you can right click on the MapperTextureGenerator Icon Mapper Generator and create a new Surface.

createSurfaceItem createSurfaceItem

Select the Smode Surface Icon Surface in the list:

selectSurfaceItem selectSurfaceItem

Now you can see that even when the Stage rendering options is set to Simulation, the content is projected to the Smode Surface Icon Surface as well.

contentBothSurfaces contentBothSurfaces


Overlap

With the Simulation Stage rendering options , you can see that some areas are in the shade of other objects:

projectionShade projectionShade

In this situation, you might want to add at least one other VideoProjector Icon Video Projector to cover more angles of projection. In the same way as for the first, create it in the ElementTreeWorkspaceComponent Icon Element Tree , select the Surface Icon Surface to project on and place them as you want in the 3D space:

2VP 2VP

You can set both VideoProjector Icon Video Projector to white mode directly in the PipelineWorkspaceComponent Icon Pipeline Editor :

whiteVP whiteVP

This allows you to see the areas with more or less light and see if it is homogeneous or not:

overlap overlap

The goal is to mask the overlapping areas to have an homogeneous result. To to so, create a Bezier Mask in the MapperTextureGenerator Icon Mapper Generator of the VideoProjector Icon Video Projector :

createBezierMask createBezierMask

With the Bezier Mask selected, activate Edit On and create new points by pressing Ctrl and clicking in the ViewportWorkspaceComponent Icon Viewport :

bezierMaskNewPoints bezierMaskNewPoints

In the end, the result should look more homogeneous.

The edges can look a little too sharp:

sharpEdges sharpEdges

It is possible to smooth the edges by adding feather on the Masks:

maskFeather maskFeather


Map the Content

For each VideoProjector Icon Video Projector , after connecting it to the Smode server, you need to create a Video Output Device . Refer to Video Projector Device for Video Mapping for more information.

  • In the SurfaceMapperItem Icon Surface Mapper Item click on Edit Source Grid Mode. It allows you to create the point grid that you will use later to adjust the perspective:

editSourceGridMode editSourceGridMode

Switch to Edit On, maintain Ctrl and click in the ViewportWorkspaceComponent Icon Viewport to create the point grid that you will use later to adjust the perspective :

editSourceCreatePointGrid editSourceCreatePointGrid

Note: it is recommended to temporarily deactivate the Mask during this step.

By default the created shape is divided into triangles but you can also create segments between the points by pressing Ctrl when your cursor is inside a shape. You are also able to create segments between points. Remove the points or segment by maintaining Shift and click.

removeSegment removeSegment

  • Then, click on the mode Edit Target:

editTargetGridMode editTargetGridMode

It allows you to distort the image according to the grid of points that you have previously created:

distortEditTarget distortEditTarget

To edit more precisely, you can change the values of the points in the parameters by clicking and sliding up and down. If you hold Shift while sliding, the values will change more slowly which allows you to be even more precise, and Ctrl+Shift to have the smallest move possible:

editPointsInParameters editPointsInParameters

  • For more safety, lock your warping with the Lock button:

lockWarping lockWarping

Since you changed the shape a little, when you reactivate the Bezier Mask, you might need to make some adjustments:

bezierMaskToEdit bezierMaskToEdit

To do so, select the Bezier Mask and with Edit On use the helpers in the ViewportWorkspaceComponent Icon Viewport to move the points:

bezierMaskEdited bezierMaskEdited