- 01 Introduction
- 02 The Maxwell Render Reality
- 03 Using Maxwell Render
- 04 Cameras
- 05 Lighting with Emitters
- 06 Setting up environment lighting
- 07 Setting up the render output
- 08 The core rendering application
- 09 Maxwell Materials
- 10 The Network System
- 11 Maxwell Studio
- 12 Miscellaneous
- 13 Material Examples
- 14 Progressive Rendering Workflow
- 15 Command line commands
- 16 Scripting References
- Documentation
- Plug-ins
- Other
Real Scale
In many texturing scenarios, it is necessary to ensure that differently-sized objects receive commonly-sized texture coordinates.
Consider, for example, assigning a wood grain texture to a piece of furniture; although the various objects which make up the piece have very different sizes, the size of a given wood grain does not. Therefore, it is necessary that the size of any texture maps assigned to these objects may be adjusted on a per-object basis in such a way that the apparent size of the wood grain is the same, as projected on each object. Rhinoceros does not offer any native texture-mapping mode which would accomplish this, other than selecting the entire piece and assigning a single texture mapping. This does not help us in this scenario because we also need to be able to control the orientation of the wood grain on a per-object basis. So we are left with only one real option: assign separate mappings to each object, then go through and re-size each one so that they all have the same size in world coordinates. This is an extremely tedious process.
To this end, the Maxwell for Rhino plugin provides a tool which allows for addressing these issues in a way which, while being nearly automatic, still provides the necessary control to orient textures on individual objects. This feature is called Real Scale. To demonstrate how this works in practice, let’s begin with the tutorial file ‘Real Scale.3dm’:

The objective will be to map this stool with a wood grain texture which is sized and oriented correctly using the Maxwell for Rhino plugin’s Real Scale functionality. For this tutorial, I began by downloading an MXM file from the Maxwell MXM Gallery (http://mxmgallery.maxwellrender.com). Once the MXM file has been unzipped, it can be imported into the plugin’s database by right-clicking in the Scene Manager’s Materials window and choosing ‘Import MXM’. To begin with, the Material looks like this in the plugin’s Material Editor:
To begin editing the Material’s textures, right-click the texture-button for the Reflectance 0° texture. This will open the texture editor and set the Reflectance 0° as the selected texture. The texture editor may be closed again, also by right-clicking on any texture button.
Real Scale is enabled by toggling-on the ‘Enable Real Scale’ button in the texture editor’s toolbar.

Before doing so, however, hold down the CTRL and SHIFT buttons simultaneously; when this key-combination is used for parameters in the texture-editor, it will cause the change being made to the texture currently being edited to be applied to all textures in the entire Material. If only CTRL is pressed, the change will be applied to all textures in the current layer (BSDF, Coating, etc.).
In addition to enabling the Real Scale feature, it is good now to also (while holding down CTRL+SHIFT) adjust the texture’s Channel to 0. If it already is 0, use the mouse wheel to adjust it to 1, then back again to 0. This is done to quickly make sure that all textures in this Material are using Channel 0 - this is important because the plugin will only enforce Real Scale texture-sizing for textures which (A) have Real Scale enabled, and (B) use Channel 0. For textures which do not use Channel 0, enabling Real Scale will only have the effect of reversing the meaning of the texture’s Tile X and Tile Y parameters.
Speaking of Tile X and Y, when Real Scale is not enabled, the basic function of these parameters could be described as meaning ‘squeeze X-number of copies of the texture into the size of the UV mapping size’. Conversely, when Real Scale is enabled (and the Channel is 0), the meaning becomes ‘make each tile X-meters in width’, where the Tile X and Y values represent the actual size, i.e. a Tile X of 0.25 means that each tile should be one-quarter of a meter in size along the texture’s X-axis.
Moving along, select all of the pieces of the stool, right-click on the Material’s thumbnail (in the Scene Manger’s Materials window), and choose ‘Assign to Selected’. As applied, the top of the stool looks like this:

While the plugin has set the size of the textures to be consistent, their orientation leaves something to be desired. To remedy this, select the top of the stool, open the Rhino Object Properties window, then from the pull-down, select ‘Maxwell Object Properties’. In the middle of the window, we find a section named ‘Real Scale Texture Control’, which has axis-rotation controls for X, Y, and Z axes:

In the case of this stool, adjusting the X and Z axes to 90° achieves a better texture alignment:

It is worth mentioning here, Real Scale always uses a cubic texture-mapping. The reason for this is that only cubic and planar mapping types have a logical ability to map objects at a globally-constant size. This means that there are shapes which do not lend themselves to this type of usage, and in these cases it is still necessary to map the objects manually. After adjusting the texture-orientations for the other pieces, we have a finished product:

Which we can now render:

The floor in this scene was also mapped in the same way; after downloading an MXM from the MXM Gallery, it was adjusted to use Real Scale and Channel 0, assigned to the floor surface, and then the texture size was adjusted by changing the Tile X and Y parameters while holding down CTRL+SHIFT.
The main difference between using the explicit texture-mapping tools provided by Rhino and using the plugin’s Real Scale feature is how the mapping is affected when the object it is working on is changed, i.e. moved, rotated, or scaled. When you use a Rhino mapping, the size and orientation of which you have carefully adjusted, you stand to lose your sizing work when you modify the geometry it is mapping. Generally speaking, if you scale the geometry, the mappings will also be scaled, and any real-world correspondence to the texture-sizes will be lost. If, after scaling the mapping, you move or rotate the object, the mapping may move away from the object in unpredictable ways.
This is not the case with the plugin’s Real Scale feature. You may move, rotate, and scale objects however you wish; the Real Scale mapping will be maintained, and the orientation set using the Real Scale Texture Control will not change. It is still possible to make changes to geometry which will require the use of the plugin’s ‘Refresh Viewport Materials’ command (in the Functions toolbar); this is due to the fact that the plugin listens for changes to geometry, but there are classes of change which do not cause a notification. Even so, though the viewport-appearance may temporarily become unsynchronized, the underlying data is tied permanently to the object it is working on.
To demonstrate, here are three cubes, 2.0m, 1.0m, and 0.5m, with a Real Scale texture assigned and no explicit Rhino texture-mappings. As you can see, the map has four quadrants, and has Tile X/Y of 1.0:

Now here are three identical cubes, using a Material which is identical to the first, but with Real Scale disabled. Each cube has had a box projector assigned to it by way of Rhino’s texture mapping window:

As you can see, the default behavior of a Rhino box projector is to size itself according to the bounding box of the object to which it is applied. This is not our desired result, so it is necessary to return to the texture-mapping window, set the Size parameter to 1.0 x/y/z for each of the cubes, and re-position the origin for the mapping boxes so they line up with the cube-corners:

So we have now achieved a 1-tile-per-meter mapping using both the Real Scale feature and the built-in box mapping provided by Rhino. What will happen if we now scale these cubes in one dimension? A problem shows up right away…

The mappings have also been scaled. This is not the case with the cubes being mapped by the plugin:

The plugin mapping is based on a fixed point on each box, rather than the arbitrary location used by the Rhino mapping. This is exactly why the plugin must provide you with the Real Scale Texture Control x/y/z axis controls in the Maxwell Object Properties page – without them you would have no control over the texture orientation. The mapping scale is not (as with the Rhino mapping) modified when the boxes are scaled; instead, the plugin detects the change and re-figures the correct mapping.




A great tutorial! It's nice to finally have these matters described thoroughly.
Awesome. Yes, very nice. This is important to me. Love the thorough tutorial!