5
$\begingroup$

A cut plane passes through an object in 3D manufacturing or architecture to see the interior workings of an object.

enter image description here

I want to create a building and landscape scene. I need to render floor plan views, which is a cut plane passing through the building at 4 feet above the floor. I want to be able to view the interior of the building, but keep the roof and outer walls in place so they continue to block ambient lighting from outside, while windows continue to allow light to enter.

Is this possible?

Thanks in advance, Tim

Edit: This is a very simply model, but, with a plane and Boolean modifier set to intersect, this is what I get: enter image description here You can see the outline of the intersection, but it's not "cutting" it. The building was made with a plane that was extruded. Is that possible causing the Boolean operator to not intersect? enter image description here

$\endgroup$
6
$\begingroup$

To expand on the great answer of stphnl329, I'll add another technique.

It works in Eevee, but I'm sure it can be used in Cycles by tweaking a few nodes. So, the idea is to create a node group controlling the alpha value of your material and simply plug it into the alpha value of each of your materials.

First we will create the basic setup.

enter image description here

Add (with a Vector Math Node) the location of each object and the local position of each pixel in the object. That way, we have the real world position of each pixel in the material. Extract the Z value with a separate XYZ.

Plug this into the value of a map range node (you need Blender 2.81+). Check clamp and invert the To min and To max values.

Add a value node and plug it into the from Min input, and add 0.001 to it and plug it into the From Max node. This setup is emulating a Color Ramp node with a constant interpolation. Plug the map range output into the alpha input of your bsdf.

In the shader editor press "N" to show the tools panel. Go into the options and set the alpha blend mode to "Hashed"

enter image description here

You can already see the magic in action. It works best in perspective mode, in orthographic you will have some light bleeding (you can get rid of it but I won't tackle that here). enter image description here

Go into your world settings and add a custom property named "floorplan"

enter image description here

Right-Click on the value of your property and choose "Copy as New Driver". Right click in the value node in your shader and choose "Paste Driver". Now your value is driven by your world property.

enter image description here

Now select all the nodes on the left of your BSDF and type CTRL + G to create a new group. Tap TAB to exit the group. Name it floorplan. Go the material of your other objects and add this node group (SHIFT + A > Group > Floorplan) and plug the output into the alpha of the bsdf. Don't forget to set the alpha blend mode to hashed in every one of you materials.

Example :

enter image description here

Final result :

enter image description here

| improve this answer | |
$\endgroup$
  • 1
    $\begingroup$ Thanks a lot for sharing your knowledge. And those animations are somehow very satisfying :)). $\endgroup$ – Jachym Michal Jan 20 at 20:26
  • 1
    $\begingroup$ Great answer! I'll be sure to try this out sometime since it avoids potential shading issues from the Boolean modifier. $\endgroup$ – stphnl329 Jan 20 at 21:46
3
$\begingroup$

Alright, after some discussion outside of Stack Exchange, this is the full solution. I've taken the liberty to put together a quick scene as a demo.

enter image description here

Method 1: Only for top-down view.

In the case where you're only interested seeing the floor layout from the top down view, adjust the Clipping Start Distance for the camera until you're seeing just what you want.

enter image description here

This gives a result like this

enter image description here

This will only work if you're only interested in seeing the floor layout from the top view only. If you're trying to view it from an angle, using the clipping settings will turn out like this:

enter image description here

Method 2: View-able from all angles, only works with cycles.

The process to be able to view the floor layout from all angles is a bit more involved.

The first thing you want to do is to duplicate and hide your house and all the objects within it. This is just to keep the original ones as a backup. If you've kept all your objects neat and tidy within collections, you can just right click on the collection and Duplicate Collection.

Now with the duplicate collection, right click on it, press Select Objects, and then press Ctrl+J to join the entire house and its furniture into a single object. If you've got any modifiers on the objects, you're going to want to apply them before joining them together.

Now add a cube, and apply a Boolean intersect modifier to the house with the cube as the target object. Resize the cube such that it intersects with the parts of the house you want to see. This can be done more easily if you set the view port display of the cube to Bounds. Also disable the cube in renders so it doesn't get in the way.

Now if you render, you'll get something that almost looks like our desired outcome. The only issue now is that the ambient lighting from the sun is no longer being blocked by the roof, since the Boolean operation had removed that part from the house.

enter image description here

Go back to your original object, and duplicate the walls and roof again. Feel free to join these two objects together. For these duplicates, go to Object Properties > Visibility > Ray Visibility, and disable Camera. This will cause these to affect the lighting of the scene, but not actually be visible in it.

enter image description here

And with all that, you've finally arrived at a floor plan that can be viewed from all angles. By animating the Boolean intersect cube, you can change the cross-section during an animation, with the proper lighting as if your entire object was still there.

enter image description here enter image description here

| improve this answer | |
$\endgroup$
  • $\begingroup$ Damn, you're good :). $\endgroup$ – Jachym Michal Jan 20 at 19:58
  • $\begingroup$ lol tbh I did just figure it out myself. Its always nice to expand your toolbox :-) $\endgroup$ – stphnl329 Jan 20 at 20:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.