If you’re feeling quite confident with your 3ds Max skills, you may want to start exploring writing scripts. With MAXScript, the powerful toolset for Autodesk’s modelling and animation suite, you’ll soon be scripting your own building blocks, tasks and more…
Many 3ds Max users create their own scripts to help easily tackle the everyday processes they need to achieve in their own workflows. For a few examples (which may also be very beneficial to your own designs), it’s worth taking a look at Jamie Gwilliam’s Autodesk UK blog. He’s collated all the MAXScript recommendations he’s received from leading 3D artists into one place.
The scripts include DIY tools for copying and pasting objects from different open instances of 3ds Max, tools for rendering objects as black/white masks, custom presets for great-looking lighting occlusion and many more.
Starting out in scripting
Before you pick up MAXScript for the first time, it’s worth an introduction to how to use the 3ds Max toolset. Handily, there are a few useful resources to get animators with no prior programming or scripting experience started…
The language was created by John Wainwright, and he’s posted a lengthy video tutorial – ‘MAXScript 101′ – for free here on Vimeo. It’s not exactly new, but the points he presents in these three and a half hours’ worth of bite-sized chunks are great for beginners. The course covers the fundamentals of MAXScript, and includes demos on how to perform tasks including scene generation, animation, material mapping, mesh export, and how to build these into tools with custom dialogue windows.
Also very handy for beginners is a two page ‘cheat sheet’ for MAXScript, which covers the major concepts of the scripting language, and presents them in an easy-to-read chart. The MAXScript Cheat Sheet was created by Markus Boos of 3D Architectural Solutions, and you can download the pdf here.
In a step-by-step guide, our 3D technical consultant explains how to use Backburner to render with non-Autodesk software, and even provides a few example commands for you to use.
“Backburner is Autodesk’s render farm management solution and will allow you to submit renders from the likes of 3ds Max, Maya and Softimage to a farm of networked machines. Backburner is included for free with the above packages, as well as a few others, such as Smoke. In a completely Autodesk pipeline, Backburner is a cheap way to manage a render farm (you can’t argue with free after all). However, many pipelines also make use of software that isn’t made by Autodesk such as After Effects or CINEMA 4D.
Using a little-known feature of Backburner called the cmdjob, it’s possible to control any software capable of being managed from the command prompt and have these cmdjobs queued by Backburner to make the most efficient use of your farm.
Implementing this will require the writing of batch scripts, so you may need to enlist the help of a script geek to get you up and running. The complexity of these batch scripts will depend on the application you are trying to control as the commands within them will be specific to that application. I tried it with both After Effects and CINEMA 4D, and reckon that the options will be familiar to anyone who uses these applications as you’re simply setting options like which comp to render or the size of the output image – the only difference being that you are just doing it with a command string instead of by ticking a box in the application.
To get started with the cmdjob, you will first need to call cmdjob.exe within your batch script. On a Windows machine this can be found in C:\Program Files\Autodesk\Backburner – on a 64 bit Windows machine substitute ‘Program Files’ with ‘Program Files (x86)’.
A working example: After Effects
We will start with a simple example using After Effects to render a comp called COMP1 within a file called aetest.aep. After Effects contains a command line renderer called aerender.exe. You need to ensure that After Effects is installed on each render node you intend to use for rendering the job. AE Render (and in fact After Effects) has a render option for using multiple machines which, when selected, will cause a machine to ignore any frames that already exist in the output directory. In effect the machine assumes another machine is already working on them and skips them to render other frames in the range. This option is perfect for rendering across multiple machines, as it allows you to run exactly the same command on all machines and have them figure out which frames to render for themselves.
So let’s start building the command:
• First we call cmdjob.exe with the relevant options. In this case we add the following commands:-jobname “test job” to set the name that will appear for the job in the Backburner monitor, -manager testmanager. This tells cmdjob which Backburner manager to send the job to, and you should replace testmanager with the name of the machine that runs your Backburner manager. Finally we add -perserver to tell Backburner to send exactly the same command to each of our render nodes. So far our command looks like this: “C:\Program Files\Autodesk\Backburner\cmdjob.exe” – jobname “test job” -manager testmanager -perserver
• Now that we have the job set up we must add the aerender command that we want Backburner to run. AE Render (for CS5.5) is located in C:\Program Files\Adobe\Adobe After Effects CS5.5\Support Files so we must call that first. Next we must tell aerender which project we want it to render using -project \\shareddrive\aetest.aep. Note that, as with any render farm job, the project must be in a shared location accessible to all of the render nodes. Then we specify the composition that we want to render from our project using -comp COMP1, the frame range we want to render (in this case 1 -10) using -s 1 -e 10. Next we enable the multi-machine settings that make all of this possible with -RStemplate “Multi-Machine Settings” -OMtemplate “Multi-Machine Sequence”. Finally we specify the output path, frame padding and output format with a single command, in this case rendering out Photoshop files with 2 digits of padding-output \\shareddrive\output\test[##].psd. AE Render is intelligent enough to know that putting .psd on the end means you want Photoshop files and will replace the # signs with your frame numbers. Again the output file must be on a network location that can be seen by all of your render nodes.
You should paste this command into Notepad and save the file as something.cmd. If you then double-click this command to run it you should see the job appear in your Backburner monitor and start to run on your render nodes. CINEMA 4D [http://www.jigsaw24.com/groups/cinema%5E4d?ct=disabled&PageSize=30] But what if we have a more complex program (for example CINEMA 4D) where we would need to specify a different frame range for each node? To get this functionality we can use something Backburner refers to as a taskfile. This is a simple tab delimited text file, created in any text editor or spreadsheet program. The taskfile contains three columns. Column 1 is the taskname, which will appear in the Backburner monitor. Columns 2 and 3 are the start and end frames respectively. An example taskfile for ten render nodes working on a 250 frame scene is below:
frames 0-24 0 24
frames 25-49 25 49
frames 50-74 50 74
frames 75-99 75 99
frames 100-124 100 124
frames 125-149 125 149
frames 150-174 150 174
frames 175-199 175 199
frames 200-224 200 224
frames 225-250 225 250
We would save this taskfile on the same network location as our scene file and specify slightly different options within our batch file. First we would name the cmdjob as before but, instead of using the -perserver switch, we use the -taskfile switch and point it towards out taskfile and tell cmdjob that our tasknames are in column 1:
Next we would call the CINEMA 4D command line renderer but replace the start and end frames with pointers to our tasklist file. This will cause Backburner to generate a slightly different command for each node only containing the frames that node is required to render:
Note the %tp2 and %tp3 these options tell Backburner to read from the tasklist file and replace these strings with the relevant frame range before running the command so the command sent to the first render node would contain -frame 0 24, the command to the second node would contain -frame 25 49 and so on.
So the final command for our batch file would look like this:
Running this batch file would queue up your CINEMA 4D job within Backburner – once again you must ensure that CINEMA 4D is installed on each render node and that you have enough net render licences to cover the amount of nodes on your farm.
These basic theories can be extended to allow Backburner to make use of any software that allows rendering through the command line. While generating the batch files can look a bit scary, you soon find that the options available match those you would be setting within the scene file anyway. If you need to do a lot of queuing of multiple programs on your render farm, I would recommend something more advanced like Qube! as it wraps all of this functionality in a more user-friendly GUI. For those that need this functionality occasionally or don’t have the budget for something like Qube!, Backburner’s cmdjob is a great option.
A full list of the commandline options for cmdjob, aerender and CINEMA 4D can be found by following these links:
Choosing the right graphics card can make or break your experience within a 3D application. The GPU is mostly responsible for driving your viewports, and choosing the wrong one can quickly leave you frustrated as you wait for lines to redraw and experience sluggish navigation. This can lead to you having to turn off many of the bells and whistles such as Maya’s Viewport 2.0, LightWave’s VPR or 3ds Max’s Nitrous Viewport and therefore experience sub-par visual quality.
The choice between NVIDIA and AMD can be difficult at the best of times, but with each quoting specifications in a different manner and throwing acronyms like CUDA and OpenCL into the mix, things quickly get even more complicated. We have benchmarks on the latest generations of both the FirePro and Quadro cards, representing the professional lines from both manufacturers.
Before we get into the benchmarks, a word on consumer level cards. Many people use cards such as NVIDIA’s GTX range or AMD’s Radeon cards within their 3D applications without any problems, and these cards are certainly much cheaper than their professional counterparts (even though they are often based around similar hardware). The reason for the price difference is that the professional cards are engineered to a far higher level than the consumer models. They support higher visual fidelity through hardware antialiasing and superior hardware texturing and also have software drivers optimised for 3D applications rather than games; these enhancements can make a huge difference to performance and stability. For those reasons we would not recommend consumer cards unless your budget holds you back – even a low end professional card will often outperform a high end consumer card.
We have benchmarks using a range of Quadro and FirePro cards using SPECviewperf, Cinebench 11.5 and 3ds Max 2011. The 3ds Max test was performed by playing back a pre-set animation in the viewport with realtime animation turned off, forcing the card to draw every frame, then we timed how long each card took to complete this animation. The SPECviewperf benchmark contains tests using both Maya and LightWave, so between all of these benchmarks all of the major 3D apps are covered. Note these benchmarks were performed on a Windows-based machine so the results may not transfer to other operating systems due to differences in the drivers.
The below graph shows the benchmark results and there are some surprising outcomes, with the FirePro cards looking to punch well above their weight, particularly in CINEMA 4D and 3ds Max.
If you’re not familiar with benchmark graphs: the bars represent benchmark scores which I’ve normalised, so essentially it’s a case of size matters – the graph is linear so a double size bar is twice as fast and so on. It’s worth noting that the benchmarks are based on real world applications not synthetic benchmarks, making them much more relevant.
Conclusion – Price isn’t everything
The FirePro cards from AMD are priced extremely aggressively with the V5800 beating the Quadro 5000 – a card more than five times its price – in the CINEMA 4D test, and coming close to it in the 3ds Max test. The NVIDIA cards are priced so highly because of their CUDA/OpenCL credentials but this isn’t always relevant when you are talking about rendering your viewports. It may become more important in the future however, as GPU renderers such as iray and V-Ray RT become more prevalent. My thoughts and recommendations for specific software packages are below:
Maya: For ultimate performance there is no contest here: the current Quadro cards are simply the best. Since these tests were done, NVIDIA have released the Quadro 2000 which is based on the same Fermi architecture as the 4000 and 5000 models, but with fewer CUDA cores. This will likely make a good budget alternative for those who can’t afford the 4000 model as it is priced slightly cheaper than the FirePro V7800, which it should outperform.
3ds Max: The waters are a little more muddy here. If it’s sheer viewport performance that you are interested in, then the FirePros look significantly faster (and cheaper to boot). It’s worth noting that both NVIDIA and AMD offer performance driver plug-ins for 3ds Max. Claiming 50% boosts to viewport performance, these performance drivers were not tested here – although as both manufacturers offer them I don’t believe they would significantly affect the rankings. I would highly recommend using them though, as they could speed things up greatly and are one of the main reasons to go with a professional card over a consumer model.
There is one big caveat though. In 3ds Max 2011 (for subscription customers) and 2012 (for all customers), Autodesk include the iray rendering engine. While this has nothing to do with the viewports, it does allow you to use the GPU to speed up final renders. Like V-Ray RT, this means you can get near-interactive photorealistic images, making iteration much faster and meaning much less waiting for preview renders. The catch: it only runs on NVIDIA CUDA-capable cards. This alone is enough to buy an NVIDIA card over AMD and is where the Quadros, with their larger amounts of RAM and CUDA cores, start to justify their high price.
LightWave: The Quadros again have the advantage here, although it seems like the Quadro 4000 performs just as well as the 5000 – which is twice its price – so I’d recommend putting your budget into more CPU cores rather than a high end GPU here.
CINEMA 4D: Here the FirePro cards really shine and I wouldn’t recommend the Quadros here at all due to their price. The performance of the FirePro cards seems to level off at the mid-range making the V7XXX range seem like the sweet spot for all but those dealing with massive data sets.
Final Thoughts I’ve focused on viewport performance here because, as mentioned above, there are some GPU-based renderers starting to come of age (most notably iray and V-Ray RT). V-Ray RT makes use of OpenCL, so should technically run on AMD or NVIDIA hardware, although the NVIDIA cards seem to have the edge over AMD in OpenCL performance at present. Many of the other GPU rendering engines, such as iray, run exclusively on NVIDIA hardware so I would recommend NVIDIA to anyone wanting to make use of such render engines.
We’ve also found that NVIDIA’s consumer cards seem to be just as fast as their Quadro counterparts with a similar number of CUDA cores when using V-Ray RT. So there’s potential to use one or more cheap consumer cards to accelerate V-Ray RT and get away with a lower end Quadro to drive your viewports. There can be issues around the limited RAM on GTX cards with a setup like this, but it’s certainly worth looking into.
LumenRT promises to deliver “high fidelity, photo-realistic 3D viewing with accurately simulated lighting, shadows, and reflections.” Following the launch, we put it through its paces to see how well it performed. In keeping with the SketchUp philosophy, it’s very simple to use and does all of its processing in the background, allowing you to continue working on your scene while SketchUp is rendering.
Primarily aimed at architects, LumenRT is a photorealistic renderer with a difference; it has the ability to package your rendered model into an executable file called a LiveCube. These LiveCubes will run on Mac and PC and add an extra dimension to your renders: instead of sending still images to clients for approval, you can send them a complete 3D model to explore and ‘walk’ around.
The LiveCubes must be regenerated each time a change is made to the model or materials, so there is no live previewing of how they will look – although in draft mode the generation only took a few minutes on my MacBook Pro. I thought LumenRT integrated well with SketchUp, making good use of the native materials and handling transparency well. It even adds some nice little touches such as animated ripples in water and lighting variations dependent on the time of day you have set up, something that has been very popular with clients.
As well as being able to export LiveCubes, LumenRT can also export pre-baked movies in Windows Media or QuickTime formats as well as still images. You can find some examples of the kind of images achievable, as well as some LiveCubes to play with on the LumenRT site.
Intelligent material settings
The visual quality of the LiveCubes is very good, especially if you put a bit of time into setting up your SketchUp materials. LumenRT will intelligently pick settings based on the material types in SketchUp – for example, having “water” in the material name will apply preconfigured settings for water. Likewise, brick and tile materials have bump maps automatically applied for extra realism. Settings for these extra features can be controlled by appending strings to the material name. So to increase the depth of the bump maps you could add “b=100%” to the material name (specularity and shininess can be controlled in a similar fashion). The default values provide very good images but it’s always nice to have the option to tweak materials in this way.
All in all, I’ve been impressed by LumenRT. The images from the LiveCubes are of a high standard – although, it has to be said, not up to that achievable with V-Ray for SketchUp (which can be forgiven when you’re paying less than half the price for LumenRT). The images are more than sufficient to communicate design intent however, and of a good enough quality to send to your clients. The ability to share the entire model in an easily navigable, visually pleasing format is a great feature and could really help when you’re explaining design intent. It’s compatible with both the free and Pro versions of SketchUp 7 and 8.
For more information on LumenRT Review for SketchUp, give us a call on 03332 409 306 or email CAD@Jigsaw24.com.
If you’re keen to become more productive with Revit but don’t feel you have the computer programming skills, you’ll be glad to know the Autodesk Developer Network have created a guide called ‘My First Revit Plug-in‘ to help you do just that. A plug-in can automate and extend the capabilities of Revit, making you more productive while picking up some programming skills along the way.
‘My First Plug-in’ is a self-paced tutorial guide for a smooth introduction into the programming world, designed for users who know Autodesk products but are completely new to programming and thinking about taking the plunge. The guide has been created based on Revit Architecture but also applies to Revit Stucture and Revit MEP (providing you are using the 2011 version or higher).
Supported Products: Autodesk Revit 2011 family or higher.
Programming Language: C#.
Application Programming Interface (API): Revit .NET API.
The guide has been split into seven easy tutorials which can all be viewed at Autodesk’s website.
Autodesk are also encouraging users to share their creations with each other on their forums.
If you’d like to know more about any of the Revit family, or upgrade to a newer version, give us a call on 03332 409 306 or email CAD@Jigsaw24.com.
Software licensing can cause some of the biggest headaches during the process of building a render farm. Many manufacturers offer confusing options concerning render-only licences and unfortunately there’s also a lot of (often outdated) information scattered around the internet, which only serves to complicate matters.
Some software packages, most notably After Effects, 3ds Max, LightWave and V-Ray offer unlimited render node licences provided that you have at least one full seat. While these are the easiest to license, don’t make the mistake of thinking that just because this is true of the host program, it’s true of its plug-ins too. For example, Red Giant’s Trapcode plug-in for After Effects ships with support for five render nodes – any more than that and you’ll need to buy extra licences.
Again there simply isn’t enough room here to cover every single piece of software and every plug-in but I will try to cover the larger software packages and a few plug-ins that deviate from the norm.
Maya: Maya can be fairly complex to license on a render farm. Autodesk offer the mental ray Standalone which can supplement the mental ray rendering technology found within Maya, however, this may not always be the best option. For every networked licence of Maya, you’ll get five Maya batch nodes, which are effectively five free licences of mental ray Standalone. So it actually works out far cheaper to upgrade any nodelocked licences of Maya you may have to network licences rather than buy five copies of mental ray Standalone for each nodelocked seat.
CINEMA 4D: CINEMA 4D offers a good range of options for network rendering. It’s designed to work with NetRender which is MAXON’s own solution for network rendering but can also be put to use via third party render managers such as Qube!. The Broadcast and Visualize versions of CINEMA 4D come with three NetRender licences per seat while the Studio version comes with unlimited licences. As MAXON do not offer NetRender licences as a standalone purchase, the only way to get more than three render node licences is to upgrade to the Studio edition. Thankfully though, one seat of the Studio edition will allow you to render all of your CINEMA 4D jobs from all of your workstations on a render farm.
As you can see, software licensing can be complicated. The best advice I can give is to make sure that you factor all of your plug-ins into the equation as this is the most prevalent problem I see when out in the field. If you want further assistance, give Jigsaw a call and we can demystify it all for you.
If you’re after tips on getting the most from Vectorworks, here’s the latest from the Vectorworks Knowledgebase. This week: backing up preferences, disabling the Mac OS X firewall, exporting files, and more…
Backing Up Vectorworks Preferences
Backing up your User Preferences is as easy as following these four steps:
1) Once you have your desired preferences and workspace changes, quit Vectorworks.
2) Navigate to the Settings’ folder in ‘My Computer > C: > Documents and Settings > (YourUsername) > Application Data > Nemetschek > Vectorworks’
3) Copy the folder named after the version of Vectorworks you are using. For example in Vectorworks 2011, the folder is simply named 2011
4) Save this folder somewhere safe, for your future use.
WINDOWS VISTA AND WINDOWS 7
Follow the same instructions but with a different navigational path:
“To disable the built-in firewall on OS X, go to Apple > System Preferences:
Click Security on the System Preferences dialogue box and under Firewall, click Stop to disable the firewall. Normally this will only need to be disabled during the installation or updating of Vectorworks, not for using it on a regular basis after installation.”
The ‘File > Export’ command exports Vectorworks files into several different file formats (including previous versions of Vectorworks) making it possible to import them into other software programs.
nb. Vectorworks exports to a new file, leaving the original file intact.
Vectorworks KnowledgeBase offer this guide to the different file formats:
“DXF / DWG
DWG and DXF files can be read by other CAD programs (such as AutoCAD). In addition, they can be printed by service bureaus and opened in rendering programs. The Vectorworks translator exports DWG/DXF files for AutoCAD versions 2010,2007/2008/2009, 2004/2005/2006, 2000/2000i/2002, 14/LT98/LT97, 13/ LT95, and 12. Use the latest version possible for best results.
Saves all records of a particular format as a file that can be used in a database program, such as FileMaker Pro and Microsoft Access. The Vectorworks program provides a variety of formats to select from when exporting records as a database, including comma-delimited, tab-delimited, merge, DIF, and SYLK.
EPSF (Encapsulated PostScript Format) files can be read by many graphics and desktop-publishing programs. The Vectorworks translator exports EPSF files in Illustrator 88 format. EPSFs contain all drawing elements except colour bitmaps. The Vectorworks program exports these files with high resolution and full accuracy. ‘Image>Files>Exports’ the file as an image file in formats like JPEG, Photoshop, BMP, and others. The image can then be imported into other applications or used in web pages.
Export PDF – (Requires Design Series)
This command is only available on the Macintosh when Quartz Imaging is enabled. It exports the current file to a PDF document in the specified location. There are additional PDF options available for users of the Vectorworks Design Series products on both Macintosh and Windows.
This command is available on the Macintosh when Quartz Imaging is disabled. It exports a vector image of the current file in the specified location .Metafile. Export graphics files in Metafile format for inclusion in virtually any Windows program, including AutoCAD and word processing programs. There are two versions of Metafiles: standard (pre-Windows 95) and enhanced. The Vectorworks program supports the enhanced version.
Writes out the current file as a series of VectorScript commands. These commands can then be used as part of a VectorScript script or as a guide for learning .Worksheet. Worksheet files can be read by spreadsheet programs, such as Microsoft Excel, as well as by some word processing programs. Export all rows or only selected rows of a worksheet. Because many of these programs have different format requirements, there are a variety of formats to select from when exporting files as a worksheet, including comma-delimited, tab-delimited, merge, DIF, and SYLK.
Cinema 4D – 3D Only (Requires Renderworks)
Exports 3D objects in the unified view (Vectorworks Design Series required) or active layer to the .c4d format, for use in CINEMA 4D. Vectorworks layers are exported as container objects in the CINEMA 4D scene hierarchy. Vectorworks classes become CINEMA 4D layers, allowing visibility to be controlled across the scene. Layer names, object names, and object types are preserved. An additional command, Send to CINEMA 4D (3D only) is available from the File menu. When CINEMA 4D is already installed, exports the file (3D objects only) to .c4d format, launches the CINEMA 4D application, and opens the file. During export, the Send to CINEMA 4D dialog box opens. Select whether to create a new scene or merge into the current scene.
Exports 3D objects to the Parasolid X_T format.
Exports 3D curves, surfaces, and solids to IGES format.
Creates a SAT file for exporting ACIS 3D solids. The Export Solids as Trimmed Surfaces option exports a solid as several different ACIS ‘bodies’ (for example, a cube exports as six ACIS bodies). If this option is deselected, a solid is exported as a single body.
Creates an exported Vectorscript designed to be easy to import into programs like Strata Software products.
Export Stereo Lithography
Exports all visible 3D surfaces and solids in the current layer into an STL-formatted file. Export 2008, 2009, 2010 saves a copy of the file in a format that can be opened and manipulated in an older version of the Vectorworks program.”
Scroll to the bottom for a short video by Vectorworks that demonstrates how to use the Render Bitmap tool so that you can enjoy render previews (that are printable and exportable) without leaving the Viewport.
If you have any more queries about Vectorworks, give us a call on 03332 409 306 or email CAD@Jigsaw24.com or, if you want to share any of your own tips with other Vectorworks users, feel free to post them as comments below.
“Let’s say you have the following scenario of a wall and column:
You add a Floor Plan Callout, which results in what you expected:
And then a Detail Callout, where the results are not what you were expecting:
So why does the column appear to be transparent in the Detail callout?
The reason for this is that, when unjoined, the wall and column occupy the same physical space. You do not see this display in your Floor Plan and Floor Plan Callout because of the “show family pre-cut in plan views” parameter of the column family.
This parameter determines whether the column displays based on the cut plane specified in the project’s view or within the family. Keeping this parameter checked results in columns that always display the same regardless of the project view’s settings. More information on this can be found in the Specifying How a Structural Column Displays in Plan View document in the Help menu.
So when this parameter is checked, you are not seeing the ‘real’ relationship between the elements in your Floor Plan and Plan callout – you are seeing a representation of the column based on the cut plane in the family.
To further clarify, if you edit the column family, go to Family Category and Parameters and clear this checkbox, you’ll see the that column displays with the same sort of transparent appearance in all views, not just the detail.
The way Detail Callouts are generated internally is different from true ‘plan’ views and they do not use this parameter, so they show consistently based on the cut plane of the project regardless of whether it is checked or not.
The ways to approach this would be to join the wall and column where applicable (so their geometry no longer overlaps) or to use a Floor Plan callout when needed instead.”
“The basic idea behind this tip is that grid bubbles that display great at one scale don’t do so well at others. For example, same grid, different scales:
Using annotation scaling solves part of this problem – if your grid bubble block is annotative, it can easily have a different location at different scales. But the grid lines are a bit of a different story. If the grid bubble moves, the line also has to move in order to stay connected.
But lines and polylines don’t support annotation scaling. What to do?
Well, your best bet is using an annotative leader for the jogged portion. If you create a style with no arrow, you can create a three point leader (for a variable landing length), put it on the grid layer, and adjust its location appropriately for each scale. Then you don’t have to deal with duplicating objects on separate layers to accommodate the different scales.
Pretty nifty, isn’t it? Here’s a link to the full tip.