From BlenderWiki

Jump to: navigation, search

Blender for Architectural Visualization Project

This page is for discussing and finalizing goals for a community funded blender development project.

The plan is NOT to turn blender into a CAD application, rather enhance the existing workflow to better allow architects to use blender for 3D visualization and mockups.

Goals

  • Integrated Render API
    Enable physically accurate ray-tracers to be used with blender. - www.luxrender.net
  • Dimensioning
    For architects to be able to more comfortably use measurements within blender (metric, imperial).
  • Modeling tools and modifiers
    Modifiers such as shell modifier for walls, edge intersection, extrude modifier, curve editing tools, freehand drawing... (todo - add more)
  • Format support
    Blender should support import/export from common applications used by architects. (DXF, Collada, DWG)
  • Improved asset management to improve the work flow for adding in furniture etc from a library.

Ideas

From ZanQdo

Small fries:

  • Shift H (hide all objects except the selected) should not hide objects in hidden layers? Done Ideasman42 16:35, 22 June 2008 (UTC)
  • Mark UV seam should work with X-Mirror edit
  • Edgeloop select could optionally collide with UV seams (similar to linked select in face mode with UV seams?)
  • Edge Length, Edge Angles, Face Area visualization needs some kind of x-ray so the numbers don't get hidden behind some solid faces
  • Option in editmode to add new hook at 3D Cursor Position
  • Options for Apply transformation (Ctrl A) to Apply Rotation and Apply Scaling only
  • Active element transform pivot in UV window (like in mesh edit mode for transforming relative to active verts/edge/face)
  • PET UI in UV window too
  • Axis lock for edit mode transform, similar to sculpt mode's
  • Improved handling of selection for view-aligned verticies
    • ( In wireframe mode, when shift-selecting vertices in an ortho view, if there are many vertices in the same view coordinate (different depth or "Z") Blender seems to select and unselect a random vertex each click.
    • If the user wants all those vertices selected so they have to use border select or a similar raycast selection method. It might be smarter to select/unselect all coincident vertices by default (Lightwave modeler does exactly this).
    • When the goal is to select specific vertices, Blender seems to have some disambiguation by biasing the cursor towards outbound edges, but this doesn't seem to work properly when using shift-select. It's a tricky problem, but some type of disambiguation method would be helpful.
  • Point draw mode as custom object draw and window display type, this mode only draws vertices and not edges or faces and its very fast and cleaner to see with dense meshes like terrains etc
  • Lock view rotation. Option to disable the rotation of any viewport, in case you want it to stay freezed on top, side, front view etc
  • Fast Visual clue that tells you are in an ortho view (side,top, etc), something like changing the color of the view name in the top left side of 3d view (similar to what curframe marker does when current frame contains a keyframe). This eliminates the need to read the tiny letters.

Bigger stuff:

  • Optimization for dealing with 1000's of objects, currently actions like deleting, hiding, moving from layer, duplicating, selecting objects, etc, done on an object in a scene with many many objecs is painfully slow (minuts)
  • Revamp image references in 3D views: create a reference that stores data like the image name, opacity, size and location and other settings and being able to link that reference to any view (top, front, side, etc) and any 3D window (they should remain linked like multiuser data, not copied). This allows to 1- Reuse references across the project or between .blend files and 2- set independent references for each view direction.
  • Add extra tools for controlling the reference image like: image over (as a faded image on top of 3D view elements, not behind), rotate image (as an addition to position and scale), interactive setting of (loc/rot/size)

From Yorik

  • offset tool: in arch. you often need to "duplicate at a certain distance", for example, you have a path of lines that you want to turn into a wall. Then, you would duplicate those edges to, say, 20 centimeters, in xy plane, then extrude vertically to the desired wall height. The duplication requires certain calculation, because each vertex must lie at a certain distance depending on the angle between adjacent edges, so it cannot be currently achieved with common extrude+scale... Example script from freecad here. I'll try to adapt that script to Blender...
done: implemented in CADtools by migius (2010.01)
  • thumbnail image for .blend files: when you deal with archviz, you use a lot of furniture, so yu end up having big objects libraries, with, for example, 50 different chair types with different design, etc. You need a way to choose visually what chair to use. Ideal would be that blend files can have a thumbnail image, like materials, so you can easily browse your libraries... Could be for example using the last rendered image as thumbnail? In an ideal world, that thumbnail could also appear in file managers...
  • be able to specify a wire width parameter for wire materials: This would allow to use wireframe materials to render linework with differents linewidths. Rendering a technical drawing would give very perfect results, and it would also give much more flexibility for using wireframe objects to mark lines, etc... in normal scenes.
  • a script to export 2d data to CAD programs (that is, not meshes, but something you can directly use in a 2d drawing). If we beging to use blender actively for modeling architecture, I mean with precision, then the biggest advantage is to be able to extract 2d drawings from it (plans, sections, views). This way, you don't need a third program between blender and your 2d app.
done: this script is now being implemented by Migius - see http://blenderartists.org/forum/showthread.php?t=136439
Yay! Done! Thanks, Migius!!!

From migius

The CADtools project is started early 2008. There are some solutions for issues mentioned here.

increase Blender's scene limits

Blender's workspace is limited to +/-1.000.000 units in x-y-z directions, controlled by Grid:Spacing parameter in View-Properties-Panel. The default scene limit is set to +/-1.000 due to optimal screen performance. If you work with [mm] your scene are limited by default to 2m x 2m, and can be increased to maximal 2000m x 2000m. Many CAD-systems are working with even bigger coordinate spaces. The only way to make 3d-models from them accessible in Blender is downscaling and relocating them at import time. A better way would be to increase maximal value of Grid:Spacing parameter from 100 to 1000. It increases the workspace up to +/-10.000.000 units, e.g. scene in [mm] might have dimension up to 20km x 20km, which is more suitable for some projects.

done: implemented in Blender2.49-CAD-edition by migius.

working with hierarchies imported from CAD

CAD systems use hierarchical structures for efficient data management. The DXF-Importer script can import complete CAD hierarchies. The currently implemented representation of hierarchies uses Groups/DupliGroups. Unfortunately the editing and management of Groups/DupliGroups objects in Blender is still very ineffective/unhandy. So we need:

  • Group management in Outliner: for effective work with Groups and DupliGroups we need additional functionality in Outliner:
    • "in deep" graph of Group hierarchy with good navigation and in-place-editing functionality
    • ergonomic displaying = filtering/sorting
    • searching tool with reg.exp, also filtering/sorting for final results
    • multiple-items interoperability: (re)naming, level changing,
    • drag&drop also for hierarchy editing
  • "in-place" editing of DupliGroups in 3D-View: better visual control for editing instances of Groups in local 3d-context. Instant visual feedback during (ex)changing proportions/parts of model is very important for architects. At the moment the only way to edit geometry of DupliGroups is to go to its Group-definition (currently all Group-definitions are stored on layer 19). The access is extreme difficult, because members of all Group-definitions are positioned at the same place - (have to use [0,0,0] as its origin point). Temporary workaround for more comfortable access: manual selecting of group-members and transferring them to other free layer, or clearing the current layer through inverse-hiding of selection.

more effective UI for data management

There is a big problem with managing CAD models, because they usually have got a massive amount of elements (>10.000) and hierarchies. Blender-UI needs better tools for displaying, navigation and editing of big sets of data (objects, items/properties):

  • input fields should have access to popup list of items matching the context, with functionality like this:
    • scrollbar: actual (Objects/Groups)_select_menus in panels are able to display only limited number of elements
    • prev/next page... iterators for long lists
    • filtering / sorting: on base of name/properties: can effectively reduce the amount of displayed items - makes the content easier for human perception/handling
    • easy method for presetting above filter/sorting conditions
    • connectivity to Outliner/DataBrowser for more advanced searching
    • pointing object in 3d-View as alternative input method (Alt-RMB, drag-and-drop?)
  • named selection-sets:
    • storable in blend.file/project.file
    • working separately for each data-type: objects, meshes, curves, vertexes, groups
    • using filtering base on parameters and attributes of particular datatype or any combination/formula of them. Example: "filter" objects on base of: obj.name="wall*", LocZ.range, material.name="brick*" - to select all brick walls from particular store. Should work with name/loc/rot/size/area/volume/.../ID-properties
    • Selection-Sets-Manager, it could be a part of Outliner:Data-Manager-Mode, see below.

more visual feedback at work with multiple objects

The existing Ctrl-C Copy_Attributes gives no feedback. I'd like to have more visual control by copying/editing properties through multiple objects. e.g. Transform-Properties-panel gives feedback about geometry parameters of active object only, regardless the number of selected objects. IMO the panel should indicate that multiple objects are selected and should indicate "various values" for properties with different values.

Outliner improvements

I would prefer the Outliner as universal solution for managing all data-types, because of its (expected) ergonomics in database navigation. It needs a few improvements:

  • multiple instances/windows support, needed for comfortable copying/moving of data between them
  • drag&drop for all item operations
  • editing of Parent-dependencies
  • editing of Group-dependencies
  • parameters/attributes (in-place) editing
  • editing of ID-properties
  • on-the-fly structuring if row/unstructured data must be displayed, with sorting, filtering, temp dependences
  • Data-Manager-Mode: table-like comparison for specified data types for fast overview/statistics/selection/edition of their parameters/attributes. It needs appropriate functionality of course. It could be a complementary view of data to Outliner and Oops-Schematics. Especially useful for engineers/architects loving condensed view/edit of information:
    • object-data: for different statistics, quantity overview, calculations
    • mesh-data: geometrical parameters, area/volume calculation, statistics
    • curve-data: geometrical parameters, length/area calculation, statistics
    • materials and their parameters, (eventually material-node-parameters too, complementary to NodeEditor)
    • textures and their parameters
    • ID-properties of all data types
    • Selection-Sets management

Some realization ideas come from Kattkieru, to read here

arbitrary coordinates systems (inclusive grid functionality)

the recently added transform orientation tool should be better exposed, and should be able to control grid orientation

done: implemented as UCS in CADtools by migius (2009.10)

From PapaSmurf

Ok, so I am a linear thinker, and started [a big list] - too big. So here I will list out little things that can be easily accomplished as minor changes to 2.46 to benefit the graphic artists who is previsualizing architecture. You can see [my examples of architecture pre-vis here.]

Edge Styles

- Multiple Edge Styles. Currently there is one edge setting (color and thickness control) and each renderlayer can turn it off or on. For plans and visualizations, you often want highlights around specific objects (different edge color and/or thickness). I propose moving the Edge settings to the RenderLayer panel and having Edge settings per RenderLayer, not just per scene.

Line Styles

- Line Style Texture. Presently we have Curves, which can be rendered if given some width, extrude, and Bevel depth, and given a material like flat black. The only way though, of making a dashed line is by using the Wood texture, which does not give clean breaks. A new texture, LineStyle, is needed that provides a black-white texture that can be mapped to alpha, which provides the variety of line styles needed to denote boundaries, setbacks, etc on a drawing/render.

Unit-sized Textures

- Unit Textures. Presently, textures are mapped relative to the whole size of the object. For image textures like Brick, this does not work easily. An option in the Map Input would be to map the texture in Blender Units, So I could say that this image is an image of 1 meter of fencing. offsXYZ and orientation (that XYZ grid) are still applicable, and sizeXYZ would allow tailoring (for example, the image is of 4" boards, but we are using 6" boards). Blender would automatically tile the texture to fit the mesh dimensions.

My workaround that I use is to make a plate, and array the plate to make a veneer (brick, clapboard, fencing, shingles etc) when using images as textures, because the image if of a real-world sized space. The plate has the image texture sized correctly. For example, if your scene scale is 1 BU=1m, and your image is of a square meter of brick, then texture a 1 BU^2 plane with the image mapped to Orco. Then array that plane along the side of your building (you will have to cheat at corners) to give it an accurate brick veneer.

from Abel

snap from vertices in object mode

Instead of (or in addition to) snapping the active objects' bounding box corners to another object's geometry, I'd like to snap an object from any vertex (so not even necessarily within the active object) to any vertex of any object in the viewport.

indicate which point is taken as the snap base

When using snap in edit mode and moving part of an object around, I am never sure which vertex of the part that I'm moving around will be used to snap from. This could be indicated with a visual cue (making a vertex bigger or putting a circle around it or changing the colour). It would be helpful if this cue is already visible before starting the moving, so that the right vertex can be selected by hovering the mouse over vertices in the 3d view.

landscape creation based on points or edges

A recurring task in architecture projects in non-flat countries is to create the geometry of the terrain based on either a number of 3d points or a series of isolines. I've seen a script for the latter, but it was written in Python and a bit on the slow side. It may be good to have an option for accuracy versus speed as the isoline drawings can be overly detailed in some curved parts.

use curve+array modifiers without distorting the base object and its copies

When combined with the array modifier, the curve modifier can be very useful for making objects like columns follow the shape of a curved facade. Unfortunately, currently the copies of the original object are deformed. It would be nice to be able to just use the curve for the objects' position and rotation, without any deformation of the geometry.

interesting issue. could you illustrate it please? migius 05:37, 11 February 2009 (UTC)

use instances in array (for exporting)

When exporting to a renderer that supports instances, it would be neat to be able to export geometry created by arrays as instances too.


position sun based on time + geographic location

Done: http://wiki.blender.org/index.php/Scripts/Manual/Misc/Sun_Position

keep straight angles straight when unwrapping

When unwrapping an uncapped cylinder after having marked one of the seams as an edge, the resulting uv layout is wobbly. I would like all straight edges to stay straight in the uv layout.

lock edge angle option for vertices (to keep surfaces smooth)

Sometimes when modelling organic shapes, there are some points where the curvature of a surface should stay locked. I'd like to lock the directions of all edges connected to a certain vertex, so that the vertices at the other side can only move along the direction of the edge.

done: implemented as SLIDE-mode in CADtools by migius (2010.12)

solidify selection as modifier

The solidify selection Python script is a very useful tool, but it would be even nicer if it was a modifier. I usually use this tool when creating curvy walls or balustrades, in which case it would be nice to only thicken the surface in the xy plane (so the top of the balustrade would stay flat).

slice modifier

I frequently cut out sections of a curved (subsurfed) shape, usually along horizontal planes. If this could be done with a modifier, that would result in a lot more flexible work flow. Apart from hiding an object above (or below) a certain plane, it should also cover any gaps that are created on the cutting plane.

auto save (still image/single frame) renderings

Please have the program automatically save all renderings in a user specified folder.

measure tool

I'd like to have a measure tool that (using snap) gives the distance (total, x, y and z) between two points. Alternatively, it could give the distance between a point and the 3d cursor.

there are some measurement scripts here [[1]], have you tested any? what is your choice/preference? migius 05:42, 11 February 2009 (UTC)

walk through mode

There should be a walk through mode (using keyboard and/or mouse), in which the camera distance to the nearest horizontal surface in the -z direction should stay constant. Vertical surfaces should be treated as obstacles, In the ideal world, stairs should be recognised and be treated as walkable slopes.

export sections and plans (partially done)

In geometrically complex projects, I use the 3d model to create (or assist in creating) floor plans, facades and sections. It would be a great workflow improvement if Blender could export those, for example as two dimensional dxf drawings. In all of these drawings, the ideal output would hide geometry that would logically be hidden.

For the sections, not only the cut geometry should be exported but also a projection of the geometry that lies on the side the section plane is facing.

Done: newly added export-profile script (http://yorik.orgfree.com/scripts/export_profile.py) by Yorik, see above

After using the cross section script (http://yorik.orgfree.com/scripts/CrossSection.py), the resulting shape should be manually rotated before it can be exported. Projected geometry can currently not be exported using these two scripts.

Done: newly added DXF-Exporter script by migius: look at "3D-View to Flat"-option.

For facades and roof views, this script works fine except for the functionality of hiding geometry that should be invisible.

multiple camera aspect ratio's and background images

When matching a camera view with a photograph, the camera ratio should match. Sometimes, photographs are taken with different cameras (or portrait and landscape), in which case different camera views in Blender require different aspect ratios. In the same scenario, it would be nice if all cameras could have their own background image.

Done: look at "Camera-Match" in CADtools script by migius.

improve boolean speed and reliability

I'm sure this is easier said than done, but at times I've literally spent hours working with the boolean tool.

NURBS

In some scenarios (like creating cuts in curved surfaces) working with subdivision surfaces is extremely tricky. NURBS could be of great help here. Also in some manufacturing cases NURBS are said to be the preferred tool. Please see http://sites.google.com/a/ckbrd.de/blender---nurbs/Home for details.

access network drives in a Windows environment that do not have a drive letter

This is platform specific, but I haven't found a way to navigate to shared folders on a Windows network, except by assigning a drive letter to the folder first.

integrated irc window

So I can chat without raising suspicion at work :-)

view mode that has both textures and transparency

From VR-Builder

VR-Builder blog contains critique and ideas for Blender as a tool for architectural visualization:

From Nikitron

Node-based geometry manipulation. You know Grasshopper under Rhinoceros, or Houdiny? They build geometry with nodes. Why not? We started Sverchok thread in Blenderartist, wellcome.

Sverchok_nodes

From others

- Numeric Input: (partially done?) When inputting numbers, be able to do _ + NUMBER to apply that operation to the original number; similar to the read-eval-print loop of the python interpreter. (quote Purpleposeidon from Requests/PythonFeatures#Python_Numeric_Input)

You already can. Shift click into the field, and after the number enter +5 and press enter. All Numeric fields accept simple math formulas.--Roger 15:41, 19 July 2008 (UTC)
Not really, python operations (ie 2*3) aren't available during transform so this is not done.--ZanQdo 16:58, 30 July 2008 (UTC)

- Scale Render: being able to set scale for orthographic cameras in a manner usefull to designers. To calculate correctly you need to know the dpi of the image to be rendered, and the real dimenions of the width of the camera view. It's quite confusing. One solution might be to be able to set the dpi of the image in the output panel and tochange the scale input of the orthographic camera to something usefull like 1:50, 1:100 etc. So the user would then only have to adjust the size of the render to get the deisred part of the drawing rendered at a scale. It would also be usefull to have a way to set the output image size in mm, cm, in etc and to have presets for paper sizes like A5-A0. (also if implemented there should be some short of way to set imperial papersizes, scales and units.)

Note: the scale factor should have two fields A : B so we can have all sorts of custom scales. And also there should be an option for setting the relationship between blender unit and real world unit. This should be a prperty stored in the file so if someone appends imperial sized objects to a metric blend file then blender should apply the scale to mesh data accordingly --Alxarch 18:23, 1 September 2008 (UTC)

Links and Resources

- www.blender-archi.tuxfamily.org:

Contents