4
$\begingroup$

I am looking for a render engine capable of rendering vectors, i.e. vertices, edges, curves, etc -- objects that have no volume & no faces.

I'd also like the render engine to be free.

Below is an example what I am trying to accomplish. See how there are only points and lines in the image? That's the style I'm wanting to achieve.

I am also hoping the render engine can make much nicer pictures than this (higher resolution, control over materials, transparency, etc), and also to make animations.

Given these constraints, are there any vector render engines that stand out as good solutions?

enter image description here

$\endgroup$
3
  • $\begingroup$ Freestyle can render vectors $\endgroup$
    – gandalf3
    Commented Apr 16, 2014 at 2:00
  • 2
    $\begingroup$ @cegaton I believe he means rendering geometry that has no faces (or no visible faces) $\endgroup$ Commented Apr 16, 2014 at 3:59
  • $\begingroup$ I have edited the original question to clairify "non-volume" geometry. $\endgroup$
    – mKurowsKi
    Commented Apr 16, 2014 at 16:24

3 Answers 3

6
$\begingroup$

Blender Internal

BI can render wireframes on edge only meshes, whether shaded or shadeless:

enter image description here

BI can also render halos, which work on vertex only meshes (there are a few in the middle of the above scene), but they are affected by distance.

OpenGL

However, you could try using the openGL preview render (using the same system that renders the viewport)

Unfortunately, options for coloring objects individually is rather limited using meshes without faces. You can tweak some things (e.g. vertex size) by editing the themes, but this is obviously not what it was designed for.

You can render animations and stills with openGL render by clicking the buttons in the header of the 3D view, or in the render menu in the Info panel (at the top of the window):

enter image description here

For example:

enter image description here

Original answer:


Freestyle can render a scene as svg, using either SVGwriter or this set of python scripts.

Note that freestyle requires faces to work.

$\endgroup$
13
  • $\begingroup$ Uh, where FreeStyle was when I needed it few years back to make pretty images for LaTeX documents? $\endgroup$
    – elmo
    Commented Apr 16, 2014 at 15:41
  • $\begingroup$ gandalf3 - unless I've misunderstood, it seems that Freestyle could not render a point or line? $\endgroup$
    – mKurowsKi
    Commented Apr 16, 2014 at 16:15
  • $\begingroup$ (since a point or line will not have faces) $\endgroup$
    – mKurowsKi
    Commented Apr 16, 2014 at 16:37
  • $\begingroup$ @mKurowsKi It doesn't seem to support this, however depending on your mesh you may be able to add some faces with a modifier or something. Is it possible you could give an example of the kind of mesh you want to render? $\endgroup$
    – gandalf3
    Commented Apr 16, 2014 at 18:31
  • $\begingroup$ there is another exporter script for SVG mentioned in blenderartists: blenderartists.org/forum/… It allows you to export the viewport's view as SVG $\endgroup$
    – user1853
    Commented Apr 16, 2014 at 19:52
1
$\begingroup$

Adding a Minimal Bevel to a Curve

If you are only wanting outlines, such as this:

enter image description here

then you can achieve this very easily with either Blender Render or Cycles Render Engines by using a very minimal bevel on a wireframe curve object. Here is how you can do this:

  1. Either create an object or import one.

  2. If any parts of your model are curves, then convert them to mesh:
    Select the curve objects -> ALTC -> Convert to Mesh

  3. Now delete all the faces from your mesh:

    • Select your mesh

    • Go into Edit mode (TAB)

    • Select All (A)

    • Delete faces only (X -> Faces Only)

    • Exit Edit mode (TAB)

    enter image description here

  4. Now select the remaining wireframe and convert it from a mesh object to a curve object:
    (ALTC -> Convert to Curve)

  5. Add a Circle Curve (SHIFTA -> Curve -> Circle)

  6. Select your wireframe and:

    • Add a bevel to it:
      Object Properties panel -> Curve tab -> Geometry section -> Set Bevel Object to the circle curve created in step 5

    • Scale down the circle curve until your wireframe is as thin as you want it to be:
      Select circle -> S + Drag mouse

    enter image description here

  7. Add a material to you model. If you like a flat look without any shadows, use an Emission Shader -- then you won't even have to worry about adding & adjusting lamps. To do this, select the model and then in the Object Properties window:
    Material tab -> Add new material -> Surface section -> Surface -> Emission

    enter image description here

When rendered, it will look like a wireframe:

enter image description here

If you render and feel the wireframe lines look too thick, scale the circle curve down some more. However, if the circle is already so small you don't see it in the 3D Viewport, select it in the Outliner:

enter image description here

$\endgroup$
4
  • $\begingroup$ How would you go about coloring the object? since a curve has no mass materials seem like they wouldn't work the same way. When plotting graphs and the such, color coding is almost always necessary $\endgroup$ Commented Apr 16, 2014 at 4:59
  • $\begingroup$ Once you put the bevel on the curve in step 6, the "lines" you see in the animation at the end of step 6 are actually VERY thin cylinders, so materials can be applied normally. I'll update my answer to show that. $\endgroup$ Commented Apr 16, 2014 at 5:07
  • $\begingroup$ Hi Thom - thanks for this detailed explanation, however, I'm looking to directly render a point or line (not part of a box or any other shape), without converting it so a volume. (Sorry, it seems that I did not use the correct Blender terminology - I've added an edit to the original question.) $\endgroup$
    – mKurowsKi
    Commented Apr 16, 2014 at 16:21
  • $\begingroup$ How would I do this in blender with python (2.7)? $\endgroup$
    – volvox
    Commented Oct 6, 2015 at 17:54
1
$\begingroup$

For completeness, its worth noting that there are systems to render vector data like this.

To name a few:

Writing an exporter for programs like this shouldn't be so hard (depending on exactly what you want to display).

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .