Walk and Fly are available only in perspective views.

Walk and Fly are available only in perspective views.

All of a sudden, this dialog box started popping up again while performing a 3DOrbit inside AutoCAD Architecture.


After checking this thread for a solution and finding none, I offered the following:

Add the following to your section in your FixedProfile.aws

 <HideableDialog id=”VMToolsUI.WalkFlyToPerspectiveView” title=”Walk and Fly – Change to Perspective View” category=”Navigation” application=”” result=”1001″><Preview><TaskDialog Source=”/AcTaskDialogs;component/TaskDialogs.xaml” Id=”VMToolsUI.WalkFlyToPerspectiveView” xmlns=”clr-namespace:Autodesk.Windows;assembly=AdWindows”></TaskDialog></Preview></HideableDialog>

Make sure you do this while AutoCAD is not running, or the fixedprofile.aws file will get overwritten when you do close AutoCAD.

So Proud of my Son

So Proud of my Son

Thought I’d share with you a little success my son has had with TSA at his highschool.  Earlier this school year, he entered the Architectural Design competition at the TSA technology day at the state fair in Georgia.   The challenge was to design a garage with workshop.  He put together a design plan for a wood working shop inside an enlarged 3 car garage. Here was the design challenge copied from the flyer:

Design Challenge Background:

DIY (Do-it-yourself) is coming back into style. Many home owners are adding separate multi-use buildings to park vehicles and have a workshop as well.

The challenge is to design one of these garage/workshops for a client. Your job is to act as an architect and prepare a pro-posed design for a client who wants to park two cars and have a workshop in the same building, separate from the main house. You do not have to include a main house. The entry needs to be only the garage/workshop. Consideration needs to be made for getting materials into and large projects out of the workshop. Research what machines would be included in the workshop and where they may be placed inside for safe use. Also include some space for storage.

Here is what he submitted:

This design was started as a 2D sketch in Sketchup3D, recreated in Revit 2015, then exported to Lumion3D for rendering and presentation.  Here is a photo of his presentation board.

Submittal Board
Submittal Board

The following images are the rendered images used in his presentation as exported from Lumion.  Note, Lumion3D saves in bmp format.  These images were converted for presentation on the web.

Floor Plan
Floor Plan

Tsa Woodwork – Sheet – A101 – Workshop Floor Plan


Rendering Birdseye View
Rendering Birdseye View


Rendering Perspective
Rendering Perspective


Rendering Interior
Rendering Interior

When he presented his design and was interviewed he ended up winning the blue ribbon – First Place for his efforts. A good effort for a 10th grader with no formal training or any classes in Architectural Design.

The blue ribbon!
The blue ribbon!

View his Lumion3D rendering and panorama model for the TSA Technology Day Architectural Design Competition.

Upgrading Application Macros for New Versions of Revit

This time of year requires a large number of upgrades. I recently wrote about upgrading the Revit library and templates, but there are many file types in the design ecosphere. Today we focus on upgrading application level macros inside Revit. Visit Wakefield Beasley’s blog here to read my latest blog post on upgrading Revit application macros.

Update: Using DOS and VBScript to Upgrade your Revit Library for Free

Minor update to scripts and addition of scripted upgrade for template (rte) files as well as automated cleanup of associated files. Please grab a copy of the updated zip file here:


Using DOS and VBScript to Upgrade your Revit Library for Free

Using DOS and VBScript to Upgrade your Revit Library for Free

Spring is here and its time to get ready for the next Autodesk product upgrades. If you are a Revit user like me, you probably don’t look forward to upgrading the library with each release.  In releases up to 2015, Autodesk always provided an upgrade families batch routine for Revit.  Since 2016, that utility folder is missing.  Have no fear, I have the solution for you.  Ready? Lets get started.

Set up a duplicate folder tree for your next version library. I use “Tree Copy” to generate a duplicate folder structure from my existing library. Create a folder that you can use as work area. I named mine “~PROCESSING”.

Processing Folder
Create a folder to process the upgrade files.

Select a handful of folders from last year’s version of Revit and copy them into your “~PROCESSING” folder. I use a “right click” drag and drop process to ensure that I am copying the files not moving them.

Screen cap for drag n drop
Drag and Drop Copy

Release your mouse when the cursor is over your destination folder and use the popup menu to choose “Copy Here”. Don’t worry that windows indicates “Move to ~PROCESSING” while you are dragging the files. If you right click drag, you’ll have the option to choose when you release the mouse button.

Choose copy
Release the Dragged Copies


Let Windows do the Copy
Let Windows do the Copy

Now that you have your old files ready to be upgraded, copy the provided scripts to the same location using the “right click” drag and drop method as shown in the image below.

Here are direct links to the script files you’ll need:



Right Click Option
Right Click Option

To create the file list for your families upgrade, double click on the “Upgrade_RFA.bat” file inside your “~PROCESSING” folder.

Double Click to Run
Double Click to Run

When the batch file runs to completion, the famlist_rfa.txt file will appear as shown below. Note: the zip file download now contains two additional files a batch file to create a list of project files, and a journal file that will upgrade the project files.

Scripts for Family Upgrade
Scripts for Family Upgrade

We are now ready to process our upgrades.  We will allow Revit to run in automated fashion using a custom written journal file that we drag on top of the Revit 2016 desktop shortcut.

Launch the Upgrade
Launch the Upgrade

Let Revit run in Automatic mode upgrading your files.  If it errors out, it will present an “Entering Interactive Mode” warning like the image shown below.

Brings Upgrade to a Screeching Halt
Brings Upgrade to a Screeching Halt

Click Enter interactive mode, and click “OK” to accept any other message dialogs that appear. Exit out of Revit, saving the last file that it had successfully opened.  Navigate your folder and find the journal.0001.txt or the highest number journal file that has been created if this has happened on more than one file.

Find the last journal file
Find the last journal file

Double click to open this journal in Notepad.  Scroll to the bottom of the file and click at the end of the text found on the last row.  Click the edit menu and choose find and then enter  .rfa as the search term in the text box that displays.  Change the search direction to “Up” and click “Find Next” three times to advance to the last opened file.

Find the last opened rfa file
Find the last opened rfa file

Highlight and select the filename and extension (.rfa) as shown in the image below.  Copy this file name to your clipboard.

Copy the filename
Copy the filename

Close the text file and open the famlist_rfa.txt file in your ~PROCESSING folder using notepad.

Double Click to Open
Double Click to Open

Place your cursor at the very beginning of the file, click the edit menu and choose find.

Find the filename in the list
Find the filename in the list

Paste the filename from your clipboard to the search entry text area and click find next.  Select the row that contains that filename and all the preceding rows.  Delete them from the text file. Ensure that you delete the empty row at the top so the first row contains the next available file name and path.  Save and close the famlist_rfa.txt file.

Delete all processed files
Delete all processed files

Left Click and drag the Upgrade_RFA.txt file from your ~Processing folder onto the Revit 2016 desktop shortcut as shown in the next image to restart the process.

Restart the Process
Restart the Process

Watch the magic happen as the batch routine continues reading the filepaths from famlist_rfa.txt and opens them one by one inside Revit 2016, saving and upgrading each in turn as if by magic.  When the process is done, Revit will close itself.

At this stage, you have upgraded all your families, now it is time to move onto the Project files contained in your library.  This process is very similar to the last one.  Double click the Upgrade_RVT.bat batch file to generate a new Filelist_rvt.txt containing the names of all the project files in your library. Once that file is generated, Drag and drop the Upgrade_RVT.txt file onto your Revit 2016 desktop shortcut to start the automated process.  If the process stops at the “Enter Interactive Mode” message box, perform the file cleanup by locating the last successful upgraded filename using the journal files and remove it and the files above it from the Filelist_rvt.txt file.  Drag and drop the Upgrade_RVT.txt onto the shortcut to restart the process.

Final Cleanup

Double click the XDelete_RFA.bat file to perform final cleanup operations in your processing folder.


Delete all scripts and backups
Delete all scripts and backups


Cleanup in Process
Cleanup in Process

Once clean-up is done, move the folders out of ~Processing into your library and delete the ~Processing folder.

Remember, If Revit errors along the way with the “Entering Interactive Mode” message, search the journal to find the last file processed, remove the processed entries from the respective file list and continue processing the rest of the library.


V-Ray for Revit not finding a license?

V-Ray for Revit not finding a license?

After installing V-Ray for Revit public beta the other day, I rebooted my workstation and found that everytime I launched Revit, there was a delay and V-Ray would error out with a message indicating that no license was available.

Revit throws error when VRay seeks license server from existing install
Revit throws error when VRay seeks license server from existing install

Since I knew that I had successfully installed and had ample licenses available, the problem must be in a setting somewhere.  I checked the localhost:30304 server and found plenty of unused licenses on the online tab.  Since I have an install for Sketchup and 3DSMax, I thought that the new beta may be using an existing mechanism to find  the server.  I suspected that the 3DSMax license tool was telling Revit to look in the wrong place.  Once I reconfigured the original install to use localhost as primary and moved the network ip location to the “Alternate Server 1” slot, Revit was able to pull licenses when launched.

Steps to fix this issue:

Find the chaos group folder under your start menu.

Within the 3DSMax tools find the license administration folder

Right click and choose “Change V-Ray…”

3dsmax license controller


When the V-Ray License Server information dialog box displays, make sure that “localhost” is assigned to the primary license server with 30304 as the connection port.  If you were grabbing a license from a dongle attached to another machine(s), just add them in Alternate license server 1 and/or 2.

restoring localhost for online licensing

This worked for me… your mileage may vary.


Revit – Black holes on Level Four, the Vortex of Doom, Thinking like Revit, and Best Practices.

Revit – Black holes on Level Four, the Vortex of Doom, Thinking like Revit, and Best Practices.

A designer asked for help this week with a project where they were having difficulty creating shafts on certain levels. On some levels there was no issue, on other levels she was unable to create a shaft to save her life.  This was her question:

“Good morning! One of my revit models is giving me trouble when creating a shaft. When I choose to create a new shaft it immediately gives me an error that the top of the opening is lower than the bottom of the opening. It does not allow me to adjust the heights, and I am unable to place a new shaft. I’ve audited but cannot figure this one out…”

When I jumped into their model, activated one of the problem levels and launched the shaft tool, I was greeted with this dialog box just as she described it:

Invalid shaft settings
Invalid shaft settings

Clicking Delete Element(s) gave me another cryptic message about not being able to delete the element I am unable to create in the first place.

Can't delete currently active element while in sketch mode
Can’t delete currently active element while in sketch mode

Of course hitting the Cancel button will allow me to exit the sketch mode based shaft command, leaving me right where I started with no shaft!…. It seems my designer has spawned a black hole and now I’ve been swept into the vortex with her! So I try again and this time pay attention to the property palette.

Its a black hole or an inside out shaft...
Its a black hole or an inside out shaft…

Notice the level based constraints on the shaft and the resulting Unconnected Height. Seeing this, I switch to another level and try creating a shaft and viola no error message, I seem to be able to create the shaft with no problem. So it appears the black hole only exists on the fourth floor.

Remove the top constraint association - first!
Remove the top constraint association – first!

So I cancel the command and see if I can create a shaft on the offending level four again…much to my chagrin, I still cannot create it, but at least I’m not past the event horizon so I cancel the command again. My next thought is it is a problem with an existing shaft and prepare to find the offending shafts and remove them. But wait, before I go down that rabbit hole, let me think about how Revit works! I know that Revit is always trying to help me by remembering the values I previously used for different commands… so maybe all I have to do is successfully create a shaft that is not tied to an upper constraint.  As shown in the image above, with a floor to floor height of 20′-6″ (intermediate level not shown), a base offset of 15′-0″ the result is a shaft of 5′-6″, which is valid.  Then it occurs to me, perhaps I shouldn’t have canceled out of the command after all! Since canceling didn’t store the value in the properties palette, I go ahead and try creating a shaft again on the level without the black hole, this time setting the upper constraint to “Unconnected” and clicking the green check mark to successfully complete the process.

Click to finish the sketch and create the shaft
Click to finish the sketch and create the shaft

Completing the process results in new shaft tool defaults, so when I launch the tool on another level, the properties of the shaft tool will default with the base constraint of that current level, but no upper constraint. My theory is that the tool will not error out.

Unconnect the top constraint
Unconnect the top constraint

I try on another level and have success. I try on the offending level and have success.


Ding ding ding, winner winner, chicken dinner!

Once I’ve created a shaft I am able to then create a new one on any level I wish. So next time you’re faced with this vortex of doom, just find a level that works, or create a new level and create a shaft with no top constraint. Then you can delete it and resume creating shafts on levels you want to create them on.

The invalid default settings have been replaced.
The invalid default settings have been replaced.

P.S. I am sure that this problem originated as a result of nesting shafts within Model groups and copying them from level to level with “Upper Constraint” properties tied to levels.

Revit: Best Practice – Shaft Openings

So the best practices for today are:

  1. NEVER create elements with Upper constraints set to a level and then group and nest them and copy to other levels.
  2. ALWAYS remove the “Upper Constraint” for elements within Groups and set the upper constraint to “Unconnected” with an explicit height.
  3. Better yet, don’t include level constrained elements inside groups!
Use Dynamo to Place 3d_RoomTag Families Inside Rooms (a CASE 3d_Room_Tag replacement tool)

Use Dynamo to Place 3d_RoomTag Families Inside Rooms (a CASE 3d_Room_Tag replacement tool)

On a recent project I needed to place a family in the center of each room in the project.  With hundreds of rooms in the project, I did not look forward to placing all of them individually.  I knew that Case had a 3D Room Tag tool that would place a generic model 3D Room tag family in the center of each room and populate the room number and name parameters.  Fortunately I had previously downloaded and registered this fabulous set of tools.  But if you didn’t or want to have a custom tool that you can further extend and customize, then you’ve came to the right place.  Because although the free tool is very handy, it is no longer available for new installs and I would much rather have a multi-purpose tool that can be customized and modified for different conditions and needs. For instance, what if I needed to place a different family or locate the family away from the center of the room, or at the centroid of the room?  Case is now part of WeWork, the registration system is no longer available and unless you already had the app, you were out of luck…until today!

Dynamo 3dRoomTagTool
Get a dynamo enabled 3D Room Tag Tool replacement here.

This article demonstrates a Dynamo graph that will replicate  the functionality of the Case 3D Room Tag tool.  To get started, make sure you’ve installed the latest build of Dynamo ( as of this article.  Also launch the package manager and grab a copy of the Grimshaw, LunchBox, Clockwork, and my latest BesideTheCursor packages.  If you don’t have the 3D room tag family, I’m posting it here.

Node Recipe:

1 – Levels

1 – Boolean

1 – Get Rooms By Level

1 – Number

6 – String

1 – Level.Plane

2 – Element.GetParameterValueByName

1 – Geometry.BoundingBox

1 – BoundingBox.ToCuboid

1 – Solid.Centroid

2 – BoundingBox.PerimeterCurvesOnPlane

1 – BesideTheCursor ReplaceEmptyStringValuesInList

1 – Curve.EndPoint

1 – Polygon.ByPoints

1 – Polygon.Center

1 – FamilyInstance.ByPoint

1 – FamilyTypes

3 – Element.SetParameterByName

Using the recipe above and the image below, you can recreate the graph to generate your own tool.  Continue reading below to rebuild it from scratch in a step by step manner.

Building the Dynamo Graph from scratch:

Dynamo Graph Replacement for Case 3d Room Tag Tool
Finished Graph

Let’s start at the beginning and the end as we usually do when we work in Dynamo.  First insert our starting node, the Revit Selection Action – Levels so we can choose a level.


Next we’ll insert our end node, and because we want to place our family at the center point of the room, we’ll look in the Revit Family Instance Create group and choose FamilyInstance.ByPoint.  Place both nodes, as shown below, in the graph editor and separate them so we have room to start adding the internal nodes.


Looking at the input and output ports on our nodes, we are going to need a node to provide a familySymbol (aka Family Type), and a point (3d).  We are also going to feed our levels into a node to return the rooms collection. Let’s start there, click in the search tool and type in room, when the search tool loads the selections, select “Get Rooms by Level from the Grimshaw package under Selection – Actions.


Go ahead and connect the Levels output to the Level input on the Get Rooms by Level node.  See the “Exclude Unplaced?” input?  We’ll need a True/False Boolean value to satisfy that input.  You can find one under the Core Input Actions, insert it and connect up the ports.  We can’t place a family in an unplaced room, so set the Boolean to True and connect it to the Exclude Unplaced input port.  Since we have two new outputs, we can see that we have the list of Room objects and above it a list of Room names.  This node will make our job easier as we won’t have to get the name parameter from the room object, just the number.  We’ll do the rest of the parameter value extractions and assignments later in this tutorial.

Our next step is to do something with the room objects collection.  Since rooms occupy volume, they must have properties that allow us to query the size, shape, perimeter, area, and other properties of the space.  If we abstract our thought process a little, we might be able to recreate the shape of the room and then find the center of that area.  Let’s start by grabbing the geometry of the room object.  Type “geometry.bo” into the library search tool and place the geometry.boundingbox node into your graph and connect the geometry input port to the room(s) output port as shown below.  If you run the graph at this time, you’ll see that dynamo will identify the bounding box vertex points for each and every room you have placed on the selected level. Make sure that you select the desired level from the levels node first.

Revit Dynamo Rooms Bounding Box

Now that we have bounding box objects in our graph, make them visible by creating some geometry with them.  Type BoundingBox into the search tool and look at the create options we have available. The ToCuboid node will allow us to see the bounding box within the Dynamo graph without actually placing geometry in  our Revit project. Click Run again to see the result in the graph editor.  Hold the escape button down while you roll your mouse wheel out to see all the room cuboids created.

Proto Geometry for Rooms in Dynamo for Revit

Notice the list of Cuboids.  Each cuboid has properties of length, width, and height. Since these cuboids are considered solid geometry by Dynamo, I can pass them into a centroid node to out put the centroid as a point.  This will give me the exact center of the object both horizontally and vertically.  Connect the solid input port on the “Solid.Centroid” node to the cuboid output port on the boundingbox.tocuboid node and run it to see the list of points generated. If we used these points to place our 3DRoomTag, we would soon see that the tag is placed in the exact calculated center of the room.  This may or may not be desireable.  To see the points in the Dynamo Editor, hold your “Esc” key down and left mouse click one of the cuboids.  With the cuboids selected, right click your mouse and choose “Hide geometry preview” to turn off the cubes, revealing the points generated as shown below.

Hiding and displaying geometry in Dynamo Graph Window

To redisplay the cuboids, right click again and choose “Show all geometry preview” from the context menu displayed.  In my example and to place the 3D room tag in a similar manner to the CASE tool, I must place the family at the center of the room floor, so we will need to generate a plane that we can find the center of each room on.  Click on the Library search tool and enter BoundingBox and find PerimeterCurvesOnPlane from the Clockwork geometry boundingbox query group and connect the boundingbox output port to the “Bounding Box(es)” input port. Notice that we now need a “Plane(s)” input list.  Knowing that we can get a plane from a level and we have already identified the level, let’s drop a Revit-Elements-Level-Query Level.Plane node and connect the relevant ports as shown below.

Revit Dynamo Curves generated from Bounding Box

With the perimeter curves established, we can use the search function to see what “center” options we have nodes for.  Notice that under geometry, we have a Center action for polygons under geometry.  Unfortunately, we can’t create a polygon directly from the curves, but we can create it from the endpoints of the curves.  Insert the following nodes (Curve.Endpoint, Polygon.Frompoints, and Polygon.Center) and connect the relevant ports and then run the graph again.

Generating Polygon Shapes from Bounding Box and getting center point using Dynamo for Revit

Now that we have the correct center point, we are finally ready to connect this to our FamilyInstance.ByPoint node.  The only thing left to do is to grab the Family Type (aka symbol) from the node library and preselect our family to be inserted.  Look for the Family Types node and connect it up and run the graph again. Then switch to Revit to see the results.


We’re almost done, but unfortunately our family is inserted without any room name or number information.  Let’s add some get-parameter and set-parameter nodes and connect them to complete this project.

image020 image022

Since we already have a collection of Room Names from our Get Rooms by Level node, next we need to collect the room numbers.  I’ll show you how to do that and then we’ll can add an additional collector to get the department info we need for the 3D room tag.   To get parameters from a collection of objects, we need to know the parameter name.  To do this we’ll add an Element.GetParameterValueByName node and a string node to the graph.  Enter “String” without quotes in the search box, hit enter, add the node and then type in “Element.GetP” and hit enter and add this node as well.  Connect them as shown in the image below and then we’ll start adding the Set Element Parameter nodes.

Get Parameter Value by Name in Revit Dynamo


image026 image022

Once you add these two nodes into your graph, select them both and copy/paste them into the graph so we have two sets.  Enter 3dRmName into one of the string nodes and 3dRmNumber into the other.  Connect the string nodes to the “parametername” input port.  Connect the room names collection from the GetRoomByLevel node to the “Element.SetParameterByName” node value port.  Make sure that it is the one that uses the “3dRmName” string.  Add the room(s) numbers collection from the “GetParameterValueByName” node output port to the other “Element.SetParameterByName” node value port. Connect each element port to the “FamilyInstance” output port on the FamilyInstance.ByPoint node.  Run the graph. If all the connections match correctly, you should see the values now populated into the 3DRoomTag family insertions.

Complete Dynamo Graph for Case 3d Room Tag Replacement


You now have 3D room tags placed in each room. But with the knowledge you acquired, you can also place other families and populate data in an automated way for future needs. Take a look at the custom  node graph for the method used to populate and replace the previously filled department names, determining first whether the department was previously populated.  Some parameter assignments will throw errors if you try to pass in nothing.  I used a check length of string method to validate the data and substitute a replacement value based on the string length.  You can get that custom node from the BesideTheCursor package.  If you already have the 3DRoomCube family from case, this graph will be able to use it and populate it.

Revit: Rendering Tips and Tricks

Revit: Rendering Tips and Tricks

Revit’s rendering engine generates photo-realistic images from the building information model. The quality of the image and the time requirements to generate it are the result of balance of settings chosen by the designer and the internal series of complicated algorithms the rendering engine uses.  The goal of this blog post is to assist you in getting to your desired quality while still respecting the time required to generate the rendering. With that goal in mind, there are some things you can do to speed up the process, for instance:

  1. Maximize your Resources – When preparing to render in Revit, exit out of other applications, services, and processes that might compete for resources with Revit’s built in rendering engine: fbooprender.exe
    1. Turn off screen savers, web pages, other applications, and services that have launched by default like iTunes, adobe flash player update service, and other “helper” services that launch at system startup but only bleed off resources that could be utilized.
  2. Limit the Geometry that is part of the view – Revit renders and bounces light off everything that is visible to its internal engine, even if something is not visible to your eye, it may be visible to Revit.
    1. Change detail level to course or medium
    2. Turn off unnecessary categories using visual graphics
    3. Unload linked models that won’t impact the rendering.
    4. Hide worksets that don’t contribute to the rendering
    5. Physically limit geometry through the use of section boxes and/or camera clipping planes – remember each view in Revit has its own section box.  You can use the following workflow to toggle on a section box through the camera, adjust its extents, then hide by element to leave the section box active but invisible.
Limit Geometry
Hint: Watch your geometry in the Render viewport to ensure that geometry isn’t cut off in the process of adjusting the section box.
  1. If rendering artificial lights, use light groups to manage them

Note: that lights that are not within the view can still have a significant impact on the quality of the rendered image. Section boxes exclude lights that are clipped. When planned carefully and with forethought, the combined use of section boxes and light groups can greatly reduce the amount of time required to render an image

  1. Choose wisely – The selection of materials, colors, light source shapes and other settings can greatly increase the time required to render images of similar quality.
    1. Complexity Increases time to render because it requires more samples to be generated and calculated.  Simplify your materials, geometry, and patterns to reduce render time.
    2. Quantity affects time to render.  Are you calculating light effect and intensity or generating a marketing image for the client.  Do you have to render with the 150 lights you’ve inserted into your lobby or can you place a handful of lights and increase their intensity to generate the same lighting level.  Less lights = faster render.
    3. Quality and Complexity of appearances affect render times. – Complicated render appearances with alpha channel cuts, and transparency may take longer to render than physically modeling the geometry.  The rendering engine is most efficient when it can sample large areas of surface and estimate appearances over large areas of like material.
      In general:
      i.      Smooth monochrome is faster than smooth patterned surface
      ii.      Simple surfaces are faster than detailed perforated surfaces
      iii.      Matte reflections are faster than blurred reflections
  1. Be judicious in choosing image size and resolution. – Are you rendering for a slide show or an E1 sized presentation board?
    1. Choose an image size that is reasonable and appropriate for the desired use
    2. Choose the image resolution wisely – Render time is multiplied when moving upwards from 75dpi by a factor of 2.7 times each increase. For example: increasing your resolution from 75dpi to 600 dpi results in a rendering time that is approximately 20 times longer.

Sample Rendering:

An optimized rendering
An optimized rendering

[Cross-posted from WBA blog]