Freestyle wireframe-only rendering is broken with Ztrans faces (lines disappear when Ztrans alpha and Ztrans spec are set to zero / lines behind transparent faces are not rendered / marked edges are not sometimes rendered when faces overlap) #46978

Open
opened 2015-12-15 13:03:49 +01:00 by lauri järvenpää · 9 comments

System Information
OSX 10.11.2 / Macbook Pro Retina 15" Mid 2014 / GeForce GT 750M

Blender Version
Broken: 2.76b (also broken in 2.76)

Short description of error
Rendering wireframes with controllable wire thickness requires using Freestyle but Freestyle requires filled faces even when rendering only edges. To only render edges and make the faces invisible one must set Ztrans alpha to zero.

  • When other line objects are behind line-only objects their lines are culled (however ordinary objects are rendered properly)
  • When both Ztrans alpha and spec are set to zero no lines are rendered
  • When faces overlap only some marked edges are rendered (even when faces are set to be transparent)

Exact steps for others to reproduce the error
Observe and render the attached .blend file.
freestyle-lineclipping.blend

**System Information** OSX 10.11.2 / Macbook Pro Retina 15" Mid 2014 / GeForce GT 750M **Blender Version** Broken: 2.76b (also broken in 2.76) **Short description of error** Rendering wireframes with controllable wire thickness requires using Freestyle but Freestyle requires filled faces even when rendering only edges. To only render edges and make the faces invisible one must set Ztrans alpha to zero. - When other line objects are behind line-only objects their lines are culled (however ordinary objects are rendered properly) - When both Ztrans alpha and spec are set to zero no lines are rendered - When faces overlap only some marked edges are rendered (even when faces are set to be transparent) **Exact steps for others to reproduce the error** Observe and render the attached .blend file. [freestyle-lineclipping.blend](https://archive.blender.org/developer/F268076/freestyle-lineclipping.blend)

Changed status to: 'Open'

Changed status to: 'Open'

Added subscriber: @hevonen

Added subscriber: @hevonen

Added subscribers: @kjym3, @Sergey

Added subscribers: @kjym3, @Sergey
Tamito Kajiyama was assigned by Sergey Sharybin 2015-12-15 14:17:50 +01:00

@kjym3, are you around to help us with freestyle? :)

@kjym3, are you around to help us with freestyle? :)

@Sergey Yes I am and thanks for the triage. Will look into the reported issue as soon as time permits.

@Sergey Yes I am and thanks for the triage. Will look into the reported issue as soon as time permits.

Freestyle requires filled faces to render lines along selected edges of the faces.

On the other hand, objects having a non-transparent material are considered a faced object (internally referred to as "vlak object" in Blender, where vlak means face in Dutch -- a terminology residual originating from the NaN era of Blender history). Freestyle ignores all objects having a transparent material and a wireframe material because they are considered not having faces.

These limitations are by design (documented so in the Blender manual) and not considered a bug. Consequently,

  • When both Ztrans alpha and spec are set to zero no lines are rendered

This is intended because of a non-vlak object (specifically Cube.007) due to a transparent material.

  • When other line objects are behind line-only objects their lines are culled (however ordinary objects are rendered properly)

Could you please specify by object name (e.g., "Cube.001") which objects the "line-only objects" are?

  • When faces overlap only some marked edges are rendered (even when faces are set to be transparent)

I am not sure which part of the supplied .blend file this statement actually refers to. I would appreciate it if you could elaborate it.

Notice that objects having a shadeless material are vlak objects even when they look transparent. Plus, Freestyle does not take account of face alpha transparency no matter how the transparency is specified (by materials and/or textures) and treats all faces as opaque (also documented in the manual). These features may explain what you get as a render from the demo scene.

Additional remark:

To only render edges and make the faces invisible one must set Ztrans alpha to zero.

You can obtain onnly Freestyle lines by turning off the Solid toggle in the render layer options. You don't really need to rely on a transparent material.

Freestyle requires filled faces to render lines along selected edges of the faces. On the other hand, objects having a non-transparent material are considered a faced object (internally referred to as "vlak object" in Blender, where vlak means face in Dutch -- a terminology residual originating from the NaN era of Blender history). Freestyle ignores all objects having a transparent material and a wireframe material because they are considered not having faces. These limitations are by design ([documented so ](https://blender.org/manual/render/freestyle/introduction.html#known-limitations) in the Blender manual) and not considered a bug. Consequently, > * When both Ztrans alpha and spec are set to zero no lines are rendered This is intended because of a non-vlak object (specifically Cube.007) due to a transparent material. > * When other line objects are behind line-only objects their lines are culled (however ordinary objects are rendered properly) Could you please specify by object name (e.g., "Cube.001") which objects the "line-only objects" are? > * When faces overlap only some marked edges are rendered (even when faces are set to be transparent) I am not sure which part of the supplied .blend file this statement actually refers to. I would appreciate it if you could elaborate it. Notice that objects having a shadeless material are vlak objects even when they look transparent. Plus, Freestyle does not take account of face alpha transparency no matter how the transparency is specified (by materials and/or textures) and treats all faces as opaque (also [documented ](https://blender.org/manual/render/freestyle/introduction.html#known-limitations) in the manual). These features may explain what you get as a render from the demo scene. Additional remark: > To only render edges and make the faces invisible one must set Ztrans alpha to zero. You can obtain onnly Freestyle lines by turning off the Solid toggle in the render layer options. You don't really need to rely on a transparent material.

Ah okay, thanks.

In the middle example cube.002 clips lines from cube.003 but cube.006 is rendered on the background without clipping. So Freestyle ignores transparencies but faces themselves are rendered via Blender internal and have proper transparency and Freestyle's clipped edges are just composited on top.

Overlapping edge rendering is visible at the lower right corner of the render (plane.009), on it's left is a ordinary wireframe for comparison. Some edges are not rendered (eg. low right corner edge is cut short). This is apparently also because Freestyle only thinks about faces and therefore there is z-test(?) which kills some lines with a competing face. Not a real problem in this case as I can just use hidden lines for a 2d object.

In my case I'm rendering BI shaded objects with multiple Freestyle wireframe overlays (for multiple colors) so I need solids. There was not enough layers in Blender to trivially make render passes via layers so I was just aiming for the easiest way to get the results.

Is it impossible to render cube.003 so that it's lines would not be clipped by cube.002 without using render passes (per object visible lines instead of full render visible lines)?

Ah okay, thanks. In the middle example cube.002 clips lines from cube.003 but cube.006 is rendered on the background without clipping. So Freestyle ignores transparencies but faces themselves are rendered via Blender internal and have proper transparency and Freestyle's clipped edges are just composited on top. Overlapping edge rendering is visible at the lower right corner of the render (plane.009), on it's left is a ordinary wireframe for comparison. Some edges are not rendered (eg. low right corner edge is cut short). This is apparently also because Freestyle only thinks about faces and therefore there is z-test(?) which kills some lines with a competing face. Not a real problem in this case as I can just use hidden lines for a 2d object. In my case I'm rendering BI shaded objects with multiple Freestyle wireframe overlays (for multiple colors) so I need solids. There was not enough layers in Blender to trivially make render passes via layers so I was just aiming for the easiest way to get the results. Is it impossible to render cube.003 so that it's lines would not be clipped by cube.002 without using render passes (per object visible lines instead of full render visible lines)?
Tamito Kajiyama was unassigned by Dalai Felinto 2019-12-23 16:37:22 +01:00
Member

Added subscriber: @Jeroen-Bakker

Added subscriber: @Jeroen-Bakker
Member

Freestyle Line renderer is an unmaintained area in Blender. As we won't be solving this in the near future the tracker rules state that we need to register this as a known issue.

#46978.png

Too bad the original issue didn't had a screen shot so we could compare if the issue has improved.

Freestyle Line renderer is an unmaintained area in Blender. As we won't be solving this in the near future the tracker rules state that we need to register this as a known issue. ![#46978.png](https://archive.blender.org/developer/F8304482/T46978.png) Too bad the original issue didn't had a screen shot so we could compare if the issue has improved.
Philipp Oeser removed the
Interest
Render & Cycles
label 2023-02-09 13:56:48 +01:00
Philipp Oeser added the
Interest
VFX & Video
label 2023-02-10 11:36:40 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#46978
No description provided.