No Branch/Tag Specified
main
temp-sculpt-dyntopo
refactor-mesh-face-generic
blender-v3.3-release
refactor-mesh-corners-generic
refactor-mesh-sharp-face-generic
gpencil-new-data-proposal
overlay-next
temp-sculpt-roll-mapping
sculpt-dev
tmp-volume-matrix-api-update
tmp-eevee-shadow-commit-mp
universal-scene-description
cycles_path_guiding
temp-vulkan-descriptor-sets
tmp-eevee-shadow-commit
temp-angavrilov
asset-shelf
brush-assets-project
tmp-workbench-rewrite2
temp-T101739-fix-seam-bleeding-non-manifold
tmp-mak-012623
temp-bundled-assets
asset-lite-greasepencil
temp-pbvh-split
temp-pbvh-texpaint-automasking
microfacet_hair
tmp-worbench-rewrite2-optimizations
temp-offset-array-ref
blender-v2.93-release
blender-projects-basics
temp-pbvh-seam-texturing-tweaks
temp-nodes-group-declarations
refactor-mesh-sharp-edge-generic
temp-asset-library-all
refactor-mesh-uv-map-generic
refactor-mesh-position-generic
temp-T102440
temp-rbf-pose-blender
geometry-nodes-tetrahedralization
nodes-matrix-types
temp-xr-painting
blender-v3.4-release
geometry-nodes-simulation
bli-matrix-template
temp-linux-35x-libs
refactor-mesh-corner-normals-lazy
temp-py-gpubatch-draw-advanced
xr-dev
temp-vulkan-shader
bevelv2
soc-2022-soft-bodies
arcpatch-D16436
tmp-dynamic-usd
temp-image-engine
tmp-vfx-platform-2023
soc-2022-many-lights-sampling
tracking_tools
nla-scale-fix
principled-v2
temp-ui-cpp
temp-ghost-vulkan
tmp-libs-2.93-lts
temp-T97352-3d-texturing-seam-bleeding-b2
temp-xr-virtual-camera-experiment
temp-vse-retiming-tool
gpencil-next
temp-sculpt-brush-channel
asset-browser-grid-view
temp-asset-representation
temp-gpencil-automask
tmp_libs_34
temp-T101905-gpu-backend-argument
node-add-asset-menu
temp-collection-objects-link-multiple
temp-texture-painting-gpu
tmp-workbench-perf-experiment
tmp_usd_import_unbound_mtls
tmp-drw-split-matrix
temp-sculpt-normals-masking
temp-sculpt-cavity-mask
temp-pbvh-vbos
tmp-usd-alab-v2-T100452
refactor-mesh-selection-generic
temp-T96708-brush-texture-refactoring
temp-chunk-list
feature-imformat
temp-geometry-nodes-evaluator-refactor
refactor-mesh-bevel-weight-generic
temp-chunked-list
temp-outliner-new-element-storage
refactor-mesh-remove-pointers
soc-2022-text-usability
refactor-mesh-material-index-generic
drw-manager-next
refactor-mesh-hide-generic
blender-v3.2-release
sculpt_curve_collisions
temp-anim-editors-redo-panel-D14960-D14977
retopo_transform
temp-libepoxy
temp-T99046-platform-reference-images
geometry-nodes-rigid-body-integration
file-browser-grid-view
temp-legacy-mesh-format-option
arcpatch-D14645
soc-2022-waveform-drawing
temp-T95933-object-mode-curve-selection
temp-deform-curves-on-surface
cycles_oneapi
temp-viewport-compositor-merge
temp-texpaint-automasking
temp-deform-curves-with-surface
asset-greasepencil
temp-T99046-render-test-increase-fail-threshold
temp-T98708-gpu-conservative-depth
lineart-shadow
temp-lineart-contained
cleanup-id-override-const
temp-T98375-share-gpu-textures
wintab
temp-T97352-3d-texturing-seam-bleeding
temp-T97905-compositor-meta-data
lineart-cas-2
temp-T97272
temp-T97907-compositor-meta-data
temp-T96952
tmp-usd-mak-c87f6242
temp-outliner-library-override-hierarchy
lineart-object-load
tmp-eevee-next-merge
draw-deferred-compilation-experiment
soc-2021-porting-modifiers-to-nodes-remesh-voxel
blender-v2.83-release
tmp_lib_update_32
temp-mesh-cpp
temp-viewport-compositor-compiler
temp-T96710-pbvh-pixels
tmp-new-gpu-codegen
devirtualizer
temp-T96709-painting-target
temp-collection-assets
temp-lineart-embree
temp-multi-function-eval-varray
temp-sculpt-colors
soc-2021-curves
blender-v3.1-release
temp-vertex-paint
temp-vse-channels-edge-panning
eevee-rewrite
temp-library-overrides-outliner
cycles_hydra
temp-3d-texturing-brush-b
temp-abc-features
tmp-transform-navigate
temp-image-buffer-rasterizer
soc-2021-porting-modifiers-to-nodes-remesh-blocks
temp-3d-texture-brush-prototype
temp-fix-normals-custom-data
viewport-compositor
bli-math-basic-types
soc-2021-simulation-display
greasepencil-object
temp-license-header-spdx
KTX_support
gsoc-2021-porting-modifiers-to-nodes-solidify
2d
gltf_vtree
soc-2021-porting-modifiers-to-nodes-decimate
temp-T95279-remap-referenced-data
temp-gpu-image-engine
tmp-eevee-rewrite-compilation-error
draw-viewport-data
temp-T94900-b
temp-T94900-gpu-viewport-default-layers
temp-T94185-id-remapper-ui
tmp-workbench-shader-create-infos
blender-v3.0-release
temp-geometry-nodes-extrude-mesh
tmp-T95052
tmp-gpu-polyline-shaders
tmp-gpu-shader-descriptor-2
temp-usd-prev-export2
tmp-core-id-remap-test-cases
temp-vert-normals-cleanup
temp-move-geometry-to-cpp
tmp-vector-template
drw-gpu-wrapper
temp-geometry-nodes-extrude-and-scale
temp-scale-elements-node-test
temp-usd-udim-import
temp-copy-on-write
temp-T94185-id_remapping-experiment-a
temp-llvm-testing
nurbs-opencascade
temp-usd-preview-surf-export
soc-2021-uv-edge-select-support
T93558
temp-gpu-texture-partial-updates
gpu-shader-descriptor
temp-geometry-nodes-text
tmp-vulkan
temp-T90535-usd-alab-material-import
node-tree-update-refactor
temp-sample-sound-node
temp-interface-region-search-cpp
temp-enum-socket
temp-link-portals
temp-unity-build-test
geometry-nodes-level-set-nodes
temp-virtual-array-value-type
soc-2020-io-performance
studio-sprite-fright
temp-cycles-source-reorganize
asset-browser-snap-dragging
temp-python-zstandard
soc-2021-porting-modifiers-to-nodes-merge-by-distance
temp-compositor-cleanups
temp-eevee-gpencil-rewrite
temp-vse-handles
temp-ui-tweaks
xr-controller-support
temp-node-common-cpp
temp-varray-get-set-multiple
soc-2021-uv-editor-improvements
temp-geometry-nodes-output-attributes
soc-2021-knife-tools
temp_test_sc_keymap
cycles-x
temp-field-visualization
soc-2021-curve-fillet
temp_bmesh_multires
temp-cocoa-scroll-acceleration-fix
temp-socket-decl-refactor
fluid-mantaflow-gpu
soc-2021-vse-strip-thumbnails
temp-noise-nodes-cpp
temp-compositor-canvas
T90952
temp-parallel-multi-function
temp-geometry-nodes-fields
grab_walk_fix
soc-2021-adaptive-cloth
temp-geometry-nodes-fields--fields-jacques
temp-cpp-ghc-filesystem
temp-geometry-nodes-fields--fields
temp-geometry-nodes-fields--anonymous-attributes
refactor-idprop-ui-data
compositor-full-frame
temp-runtime-node-def
temp-geometry-nodes-fields-prototype-visualization
temp-geometry-nodes-fields-prototype
temp-multi-function-procedure
soc-2021-porting-modifiers-to-nodes_all
cycles_texture_cache
experimental-build
cycles_procedural_api
soc-2021-porting-modifiers-to-nodes-extrude-and-move
soc-2021-porting-modifiers-to-nodes-extrude
temp-geometry-nodes-expandable-geometry-socket-prototype
fluid-mantaflow-2d
windows_make_docpy
usd-importer-T81257-merge
nodes-update-readonly-tag
geometry-nodes-closest-points
tmp-buildbot-gcc-10
soc-2021-geometry-nodes-regression-test
node-group-single-socket-nodes
curve-nodes-modifier
temp-geometry-nodes-curve-sample
geometry-nodes-unnamed-attributes
temp-nodes-intersect-alt-key
tmp_arcpath-D11868
refactor-vertex-group-names
temp-gpencil-bezier-stroke-type
temp-gpu-uniform-builtin-structs
wintab_fallback_walknav
temp-socket-inspection
temp-long-link-dimming
fixed_width_integers
lineart-bvh
temp-gpencil-camera-reproject
temp-gpu-push-constants
temp-attribute-processor
temp-cpp-type-cleanup
temp-geometry-nodes-curve-deform-node
wintab-logging
fix-tablet-walk
geometry-nodes-raycast
temp-spreadsheet-row-filter
lineart-fn-cached
temp-compact-node-prototype
asset-browser
geometry-nodes-curve-to-points-node
node-editor-edge-pan
eevee-gpencil
asset-system-filelist
temp-geometry-nodes-viewer-node
lineart-fn-thread-loading
tmp-buildbot-cleanup
temp-gpencil-masking
temp-ffmpeg-4.4
temp-attributes-panel
profiler-editor
FixT87160_DSE_Channel_Selection
temp-interface-cpp
geometry-nodes-curve-support
info-editor-cpp
temp-attribute-transfer-node
virtual-array-attributes
temp-pose-slide-D9054
spreadsheet-active-node
ui-asset-view-template
temp-node-tree-pages-prototype
override-outliner-view
temp-geometry-nodes-processor-prototype
temp-any-instead-of-variant
temp-unreachable-abort
temp-spreadsheet-instances
temp-geometry-nodes-instances-api-v2
temp-geometry-nodes-instances-attributes
geometry-nodes-mesh-primitives
temp-asset-tools-prototype
temp-geometry-nodes-mesh-primitive-line
lanpr-under-gp
temp_D10504-2_nla_keyframe_remap_upper_strips
blender-v2.92-release
usd-importer-T81257
temp-spreadsheet-editor-python-prototyping
temp-spreadsheet-editor
override-refactor-tmp-2
temp-derived-node-tree-refactor
T85799
tracking_scopes
temp-icons-fixes
temp_D10504_nla_keyframe_remap_upper_strips
temp-weight_mirror
temp_T76472_graph_editor_fcurve_extrapolation
eevee-closure-lib-cleanup
eevee-dof-refactor
eevee-probe-roughness-fix
eevee-ggx-lut-fix
df0bce3f7d0
temp-geometry-nodes-instances-api
tmp-ocio-v2
temp-nodes-redesign
tracking_proportional_editing_v2
blender-v2.91-release
temp-uv-face-select-no-thresh-when-inside
temp-D10103-nla_support_strip_overlap_during_transform
fracture_modifier
temp-point-distribution-refactor-experiment
temp-experimental-cpp-math-refactor
vfx-clip-ui-update
tmp-T82230-nla_remove_hold_reset_behavior
temp-D8687-directly_select_fcurves
geometry-nodes
soc-2020-testing-frameworks
geometry-nodes-point-separate-node
temp-nla-strip-alignment
temp-atomics-int16
geometry-nodes-deduplicate-float-math
asset-metadata
geometry-nodes-active-modifier-drawing
attribute-accessor
geometry-nodes-attribute-nodes
temp-T82588-box-select-invisible-keys
greasepencil-edit-curve
codesign_error_tracker
outliner-cpp-refactor
temp-fix-headerless-panels-switch-windows
temp-gpencil-fading-modifier
temp-D8915-copy-rotation-remove-sheer
geometry-nodes-boolean-node
temp-T81874-box-select-active-keyframe
geometry-nodes-transform-node
temp-trimesh-sculpt
geometry-tree-evaluation
fcurve-modifier-panels
temp-fcurve-key-insert-follow-curve
temp-fcurve-active-keyframe-D7737
mesh-to-volume-modifier
blender-v2.90-release
soc-2020-fluid-tools
property-search-ui-v2
tmp-T80603
soc-2020-greasepencil-curve
tmp-gldebuglayer
tmp-gltexture
soc-2020-custom-menus
active-fcurve-keyframe
soc-2020-soft-body
newboolean
fail-on-memleak
soc-2020-outliner
soc-2020-production-ready-light-tree-2
soc-2020-info-editor
property-search-ui
temp-ui-button-type-refactor
soc-2020-production-ready-light-tree
particle-solver-dev
tmp-gpu-context-isolation
soc-2020-xr-input
temp-remesh-octree
mac_arm64
tmp-eevee-glsl-cleanup
tmp-pointcloud-render
buildbot-lts
asset-engine--archived
asset-uuid--archived
eevee-motionblur-object
modifier-panels-ui
temp-cycles-tbb
wm-drag-drop-rewrite
temp-lanpr-review
gsoc-2018-many-light-sampling
tmp-eevee-material-refactor
tmp-widget-opti
tmp-texture-sampler
xr-world-navigation
blender-v2.82-release
node-tree-ref
simulation-access-modifier
blenloader-decentralization
temp-test-point-cloud-simulation-depsgraph-integration
functions
builtin-simulation-nodes
performance-test
obj-import-experiments
soc-2019-openxr
vr_scene_inspection
blenloader-api
tmp-workbench-rewrite
id-ensure-unique-memory-address
simulation-tree
greasepencil-refactor
draw-colormanagement
temp-gizmo-decoupled-redraws
fluid-mantaflow
blender-v2.81-release
tmp-overlay-engine
soc-2019-bevel-profiles
temp-npr-gpencil-modifiers
soc-2019-npr
temp-gpencil-drw-engine
soc-2019-embree-gpu
temp-npr-smooth-contour
temp-lanpr-staging
filebrowser_redesign
tmp-eevee-shadowmap-refactor
vamr-openxr-module
sculpt-mode-features
soc-2019-adaptive-cloth
tmp-drw-callbatching
soc-2019-outliner
soc-2019-cycles-procedural
temp-D5423-update
temp-vr-draw-thread
blender-v2.80-release
tmp-batch-cache-cleanup
soc-2019-fast-io
temp-toolsystem-multiwindow
blender2.7
collada
soc-2018-npr
temp-keymap-industry-compat
temp-fracture-modifier-2.8
temp-dna-rename
userpref_redesign
hair_object
motion_curve_fix
collada2.8
cycles_embree
interactive_physics
temp-ui-layout-2.8
cloth-improvements
soc-2018-cycles-volumes
hair_guides_grooming
hair_guides
benchmark
soc-2018-bevel
soc-2018-hair-shader-fixes
temp-udim-images
soc-2018-hair-shader
temp-volume-object
cycles_cryptomatte
temp-eeveelightcache
temp-tab_drag_drop
temp-keymap-save
temp-dynamic-overrides
fracture_modifier-master
ui_layout_gridflow
temp-keymap-changes
tmp-CollectionsAnim
tmp-b28-motionpath-drawing
uv_unwrapping_slim_algorithm
blender-v2.79b-release
tmp-COW_InsertKeyframe_Fix
temp-unified-collections
temp-modifier-rm-cddm
tmp-TimelineHeaderButtonsStretching
blender2.8-workbench
soc-2017-normal-tools
cycles_bvh8
blender-v2.79a-release
temp-scene-obedit-remove
temp-workspace-object-mode-removal
blender-v2.79-release
soc-2017-sculpting_brush
split-kernel-faster-building
id_override_static
openvdb
custom-manipulators
soc-2016-uv_tools
soc-2016-pbvh-painting
soc-2017-vertex_paint
soc-2017-sculpting_improvements
soc-2017-package_manager
strand_editmode
smooth-fcurves
id_copy_refactor
gsoc2016-improved_extrusion
temp-ssr
temp-cycles-opencl-staging
temp-cycles-denoising
ge_2df_textures
HMD_viewport
soc-2016-multiview
transform-manipulators
datablock_idprops
cycles_disney_brdf
temp_cycles_split_kernel
cycles_split_kernel
unlock_task_scheduler
uv_unwrapping_slim_and_ceres
surface-deform-modifier
cycles-tiles-rework
soc-2016-cycles_denoising
temp-layers-ui-table
uiTable
render-layers
clay-engine
multi_previews_id
cycles_disney_bsdf_transmittance
layers
pbr-viewport
temp_display_optimization
viewport_bvh_select
temp-cycles-microdisplacement
soc-2016-cycles_images
strand_nodes
object_nodes
asset-experiments
soc-2016-sculpt_tools
temp_viewport_fx_merge
custom-normals-bmesh
temp-decklink
compositor-2016
decklink
BendyBones
cycles_panorama_experiments
temp_remove_pointcache
temp_remove_particles
temp_depsgraph_split_ubereval
temp_textedit_comment_toggling
GPencil_Editing_Stage3
temp_bge_moto
UI-experiments
UI-graphical-redesign
missing-libs
free-refcount-ids
cycles_camera_nodes
epic-navigation
temp-ui-widget-refactor
gooseberry_farm
gooseberry
temp-ghash-experiments
temp-ghash-setops
temp_motionpaths
fcurves-simplify
soc-2014-fluid
GPU_data_request
depsgraph_refactor
multiview
vertex_paint_pbvh
alembic_pointcache
cycles-ptex-49
viewport_experiments
soc-2014-bge
texture_nodes_refactor
input_method_editor
GPencil_EditStrokes
soc-2014-shapekey
terrible_consequencer
GPencil_FillStrokes
libmv_prediction
blender2.4
dyntopo_holes
soc-2014-viewport_context
gtest-staging
blender-tiles
soc-2014-viewport_fx
soc-2014-remesh
soc-2014-nurbs
pie-menus
soc-2014-cycles
soc-2013-paint
particles_refactor
soc-2013-viewport_fx
tiles-scheduler
bake-cycles
soc-2013-cycles_volume
overscan
soc-2013-depsgraph_mt
soc-2013-dingto
soc-2013-sketch_mesh
soc-2013-rigid_body_sim
soc-2011-tomato
soc-2013-bge
soc-2013-motion_track
soc-2013-ui_replay
soc-2012-sushi
ge_dev
soc-2013-depsgraph_eval
soc-2008-mxcurioni
soc-2012-bratwurst
soc-2012-swiss_cheese
soc-2012-fried_chicken
meshdata_transfer
smoke2
tile
soc-2011-cucumber
bmesh
soc-2011-carrot
cycles
soc-2011-garlic
soc-2011-radish
soc-2010-nicks
vgroup_modifiers
soc-2011-pepper
soc-2010-jwilkins
merwin-spacenav
bge_components
soc-2010-merwin
render25
soc-2010-nicolasbishop
soc-2009-chingachgook
soc-2010-nexyon
soc-2010-aligorith
ge_eigen2
sculpt25
soc-2009-jaguarandi
soc-2009-imbusy
soc-2009-kazanbas
blender2.5
volume25
soundsystem
soc-2009-aligorith
sim_physics
ge_dome
etch-a-ton
soc-2008-nicholasbishop
animsys2
projection-paint
harmonic-skeleton
soc-2008-jaguarandi
fluidcontrol
apricot
soc-2008-quorn
cloth
ndof
orange
v2.93.14
v3.3.3
v2.93.13
v2.93.12
v3.4.1
v3.3.2
v3.4.0
v3.3.1
v2.93.11
v3.3.0
v3.2.2
v2.93.10
v3.2.1
v3.2.0
v2.83.20
v2.93.9
v3.1.2
v3.1.1
v3.1.0
v2.83.19
v2.93.8
v3.0.1
v2.93.7
v3.0.0
v2.93.6
v2.93.5
v2.83.18
v2.93.4
v2.93.3
v2.83.17
v2.93.2
v2.93.1
v2.83.16
v2.93.0
v2.83.15
v2.83.14
v2.83.13
v2.92.0
v2.83.12
v2.91.2
v2.83.10
v2.91.0
v2.83.9
v2.83.8
v2.83.7
v2.90.1
v2.83.6.1
v2.83.6
v2.90.0
v2.83.5
v2.83.4
v2.83.3
v2.83.2
v2.83.1
v2.83
v2.82a
v2.82
v2.81a
v2.81
v2.80
v2.80-rc3
v2.80-rc2
v2.80-rc1
v2.79b
v2.79a
v2.79
v2.79-rc2
v2.79-rc1
v2.78c
v2.78b
v2.78a
v2.78
v2.78-rc2
v2.78-rc1
v2.77a
v2.77
v2.77-rc2
v2.77-rc1
v2.76b
v2.76a
v2.76
v2.76-rc3
v2.76-rc2
v2.76-rc1
v2.75a
v2.75
v2.75-rc2
v2.75-rc1
v2.74
v2.74-rc4
v2.74-rc3
v2.74-rc2
v2.74-rc1
v2.73a
v2.73
v2.73-rc1
v2.72b
2.72b
v2.72a
v2.72
v2.72-rc1
v2.71
v2.71-rc2
v2.71-rc1
v2.70a
v2.70
v2.70-rc2
v2.70-rc
v2.66
v2.63
v2.60
v2.59
v2.58a
v2.58
v2.57b
v2.57a
v2.56a
v2.55
v2.45
softbody-stable-v1
softbody-stable-v2
softbody-stable-v3
v2.25
v2.26
v2.27
v2.28
v2.28a
v2.28c
v2.30
v2.31
v2.31a
v2.32
v2.33
v2.33a
v2.34
v2.35
v2.35a
v2.36
v2.37
v2.37a
v2.40
v2.41
v2.42
v2.42a
v2.43
v2.44
v2.46
v2.47
v2.48
v2.48a
v2.49
v2.49a
v2.49b
v2.50
v2.51
v2.52
v2.53
v2.54
v2.56
v2.57
v2.60a
v2.61
v2.63a
v2.64
v2.64a
v2.65
v2.65a
v2.66a
v2.67
v2.67a
v2.67b
v2.68
v2.68a
v2.69
Labels
Apply labels
Clear labels
Interest/Alembic
Interest/Animation & Rigging
Interest/Asset Browser
Interest/Asset Browser Project Overview
Interest/Audio
Interest/Automated Testing
Interest/Blender Asset Bundle
Interest/Collada
Interest/Compositing
Interest/Core
Interest/Cycles
Interest/Dependency Graph
Interest/Development Management
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/Modeling
Interest/Modifiers
Interest/Motion Tracking
Interest/Nodes & Physics
Interest/Overrides
Interest/Performance
Interest/Performance
Interest/Physics
Interest/Pipeline, Assets & I/O
Interest/Platforms, Builds, Tests & Devices
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
legacy module/Animation & Rigging
legacy module/Core
legacy module/Development Management
legacy module/Eevee & Viewport
legacy module/Grease Pencil
legacy module/Modeling
legacy module/Nodes & Physics
legacy module/Pipeline, Assets & IO
legacy module/Platforms, Builds, Tests & Devices
legacy module/Python API
legacy module/Rendering & Cycles
legacy module/Sculpt, Paint & Texture
legacy module/Triaging
legacy module/User Interface
legacy module/VFX & Video
legacy project/1.0.0-beta.2
legacy project/Asset Browser (Archived)
legacy project/BF Blender: 2.8
legacy project/BF Blender: After Release
legacy project/BF Blender: Next
legacy project/BF Blender: Regressions
legacy project/BF Blender: Unconfirmed
legacy project/Blender 2.70
legacy project/Code Quest
legacy project/Datablocks and Libraries
legacy project/Eevee
legacy project/Game Animation
legacy project/Game Audio
legacy project/Game Data Conversion
legacy project/Game Engine
legacy project/Game Logic
legacy project/Game Physics
legacy project/Game Python
legacy project/Game Rendering
legacy project/Game UI
legacy project/GPU / Viewport
legacy project/GSoC
legacy project/Infrastructure: Websites
legacy project/LibOverrides - Usability and UX
legacy project/Milestone 1: Basic, Local Asset Browser
legacy project/Nodes
legacy project/OpenGL Error
legacy project/Papercut
legacy project/Pose Library Basics
legacy project/Retrospective
legacy project/Tracker Curfew
legacy project/Wintab High Frequency
Meta/Good First Issue
Meta/Papercut
migration/requires-manual-verification
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 & Devices
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 Information 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 Label
Interest/Alembic
Interest/Animation & Rigging
Interest/Asset Browser
Interest/Asset Browser Project Overview
Interest/Audio
Interest/Automated Testing
Interest/Blender Asset Bundle
Interest/Collada
Interest/Compositing
Interest/Core
Interest/Cycles
Interest/Dependency Graph
Interest/Development Management
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/Modeling
Interest/Modifiers
Interest/Motion Tracking
Interest/Nodes & Physics
Interest/Overrides
Interest/Performance
Interest/Performance
Interest/Physics
Interest/Pipeline, Assets & I/O
Interest/Platforms, Builds, Tests & Devices
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
legacy module/Animation & Rigging
legacy module/Core
legacy module/Development Management
legacy module/Eevee & Viewport
legacy module/Grease Pencil
legacy module/Modeling
legacy module/Nodes & Physics
legacy module/Pipeline, Assets & IO
legacy module/Platforms, Builds, Tests & Devices
legacy module/Python API
legacy module/Rendering & Cycles
legacy module/Sculpt, Paint & Texture
legacy module/Triaging
legacy module/User Interface
legacy module/VFX & Video
legacy project/1.0.0-beta.2
legacy project/Asset Browser (Archived)
legacy project/BF Blender: 2.8
legacy project/BF Blender: After Release
legacy project/BF Blender: Next
legacy project/BF Blender: Regressions
legacy project/BF Blender: Unconfirmed
legacy project/Blender 2.70
legacy project/Code Quest
legacy project/Datablocks and Libraries
legacy project/Eevee
legacy project/Game Animation
legacy project/Game Audio
legacy project/Game Data Conversion
legacy project/Game Engine
legacy project/Game Logic
legacy project/Game Physics
legacy project/Game Python
legacy project/Game Rendering
legacy project/Game UI
legacy project/GPU / Viewport
legacy project/GSoC
legacy project/Infrastructure: Websites
legacy project/LibOverrides - Usability and UX
legacy project/Milestone 1: Basic, Local Asset Browser
legacy project/Nodes
legacy project/OpenGL Error
legacy project/Papercut
legacy project/Pose Library Basics
legacy project/Retrospective
legacy project/Tracker Curfew
legacy project/Wintab High Frequency
Meta/Good First Issue
Meta/Papercut
migration/requires-manual-verification
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 & Devices
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 Information 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
Milestone
Set milestone
Clear milestone
No items
No Milestone
Projects
Set Project
Clear projects
No project
Assignees
Assign users
Clear assignees
No Assignees
15 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#68888
Reference in new issue
There is no content yet.
Delete Branch '%!s(<nil>)'
Deleting a branch is permanent. It CANNOT be undone. Continue?
No
Yes
This is useful in CAD pipelines.
There may be enough reasons to not support ngons with holes (it adds complexity to addons and tools).
If this is the case we can close this task as long as this is properly documented in the development wiki.
Added subscriber: @dfelinto
Added subscriber: @ideasman42
This seems more like a design task, were we have to weight up the pros and cons.
There are significant advantages in having to relatively simple mesh structure.
I think there might be some conflicting goals with support for holes and high poly mesh modeling as well.
Where supporting holes will slow down mesh evaluation in other areas.
This also complicates the mental model for users (with holes we need ways to group/ungroup faces, users will manage to end up with degenerate cases - holes that don't overlap, accidentally merging faces that aren't co-planar etc).
I'm curious if modeling applications which support high-poly sculpting also support meshes with holes,
and if they do this using the same data-structures internally.
It may be that we need different data structures for this - or, that only a sub-set of the modifier stack supports holes, when a mesh has holes we use a different tessellation method and don't attempt to use the same feature-set.
We should also consider this is a fairly complex project, as well as increasing the complexity of code developed in the future.
Ngons with holesto Mesh support for n-gons with holes 4 years agoAdded subscriber: @PabloDobarro
@ideasman42 Other sculpting applications don't support ngons at all, they triangulate all ngons when importing a mesh
@PabloDobarro, interesting.
From the looks of it Maya supports holes in faces and has a sculpt tool,
although I didn't use either - just noting that it seems at least one other application does this.
My concern is having n-gons w/ holes will impact our ability to deal with high poly meshes as efficiently.
@ideasman42 We are about to remove the multires memory optimization, entering sculpt mode with a high poly sculpt is going to be slower and it is going to take more memory. Supporting a more complex mesh structure may make the problem worse.
For me, the ideal solution would be having two different mesh structures, one specifically designed for high poly meshes (it could even not support ngons or lose geometry if we can make it faster by doing that), and another full featured one, supporting ngons with holes if necessary. The high-performance mesh structure could be limited to sculpt mode/object mode, without support for modifiers or shape keys. We can do the conversion only if one of those features is used and give the user an option to disable all unsupported features and convert the mesh back to high performance if needed.
@PabloDobarro, this is probably the way to go irrespective of hole support.
Even if sculpt is made into a special case, we will want to be able have reasonably high poly meshes go though the modifier stack (animating detailed characters for example).
Added subscriber: @mont29
Honestly, I’m not sure that adding holes-in-faces support is a critical feature we really need in Blender currently. As already said, this will make things much slower and/or much more complicated, and our mesh codebase is not exactly a simple area already, we already have two different data models (at least, not counting specialized stuff for sculpting, some modifiers like subsurf, etc.).
I would rather add a proper IO support for such features ( #46761 (Add support to tessellate 'ngons with holes' in mesh's validate() func? Much useful for importers (FBX, OBJ...)) already exists since years for the import side, think we could also have something that generates faces with holes from co-planar polygons for exporters, maybe?). That would keep that aspect in a well-defined and confined area, and prevent it from spreading all over our codebase.
We could have basic support for holes, eg: keep the mesh structure virtually the same as it is now, only adding flags to denote holes (add a flag for a complex polygon, and a flag for polygons after it to be used as holes).
Initially the complexity would be limited to tessellation (which could be kept as it is now unless holes are used), however tools and some modifiers would still need to be updated to handle this properly.
Noting it as an alternative since it would allow more gradual support for holes compared to a larger overhaul of the mesh format, although it risks remaining half-implemented since properly supporting holes for all tools would still be a lot of work.
Added subscriber: @Ivo
I’m sorry for disturbing your discussion here (please keep it going), Taking my first steps in mesh modeling, I already find it difficult to get my head around triangles, normals, n-gons, degenerate stuff-stuff, co-planarity. If suddenly a hole appears in my mesh faces because some tool or modifier decided that it should an can do that, I would be hopelessly lost on a mental picture of what a non-coplanar (?) hole in my n-gon even means and what effect it will behave under further operations; let alone if it is somehow degenerate (?). Could I still enjoy playing with geometry which such beasts around?
@Ivo it's a valid point, the counter to this would be that well designed tools would minimize confusion for the user.
Sketchup has meshes with holes and seems quite usable. Even so, this would need to be integrated with Blender's existing mesh editing feature-set, unless we have a new object-type + edit-mode.
Added subscriber: @Josephbburg
Someone mentioned Maya's support for holes in faces and sculpt tools: it's worth mentioning that Maya's sculpt tools don't support non-manifold geometry at all (nor deformers or skinning, and it has major limitations for display).
Are any developers familier with Blender's mesh code interested to support this?
I'm not convinced this is worth the significant additional effort & complexity for tools, modifiers and drawing.
If maintainers of mesh-system, modifiers and drawing code are not pushing to support this, I think this task could be archived.
Added subscriber: @testure
This is something I've suggested in the past and agree that it's a good compromise solution. I have some mockups I would need to dig up but the idea was that if you flag ngon support edges and simply hide them, tool/addon authors can account for them and make their own decisions on what happens. For example, loop selection on the hole becomes trivial, where it takes two attempts currently due to the support edge breaking the loop (and no discernable difference between the user-made edge and the one added internally to support the ngons).
Alternatively you could flag them and not hide them, the benefit would be the same. As long as tool authors have a way of knowing that an edge is not user-constructed geometry we can work around a lot of the limitations with the current bmesh ngons.
Added subscriber: @howardt
I was about to suggest the same thing eldee said: flagging "support edges" as such, so that the only thing affected is display and selection of edges and perhaps export to file formats that support holes. I too think this is a decent compromise. But it is likely to uncover a number of cases where current code has to be modified to take account of these as hidden, else users will be surprised. E.g., bevel and inset and boolean may all give strange and buggy-looking results if not updated; similarly some select types (e.g., selecting ngons of a given # of sides) will appear buggy unless fixed.
I'll append here what I wrote on a devtalk thread, though it echoes many things that have already been said above:
As a mesh tools developer, I am of two minds about supporting holes.
On the pro side:
On the con side:
I would estimate that it might be a 3 month full-time job to put holes properly into Blender’s BMesh and Mesh representations. Doable, but needs to be prioritized and balanced against other things that the developers could be doing.
Personally, I am somewhat interesting in tackling a project like this but it seems lower priority than the things I am working on now. And maybe higher priority in general is the project mentioned above about having a higher-performance-less-featureful mesh structure for high-poly work.
Howard, just for clarification, are the pros and cons you listed in relation to actual holes in faces (ie, multiple loops per face) or does that also apply to the tagging solution?
Obviously I don't speak for all addon developers, but faces with holes seems like it could be an easy can to keep kicking down the road (for the reasons already mentioned). If the realistic options were 'feasible stopgap solution' or 'nothing' I'd vote for the stopgap solution, personally.
Eldee, they were pros and cons about the actual-holes-in-faces BMesh solution.
For the tagging solution, I would say some amount of "discover the bug due to there being hidden edges and fix it" con would still be there, but it would be less severe. I am also not familiar enough with the display and rendering code in Blender to know how much pain this would cause.
Thinking about it a bit more, I think we could solve some of issues you mentioned with a tagging solution if we left the support edges visible but displayed them in a slightly different way to indicate their nature. (See the mockup I've attached). In this example, you can see that the 'support edges' are tagged and displayed differently than normal edges. This would allow them to remain selectable like normal edges, and would inform the user about the underlying geometry that could have an impact on tools like bevel and inset. I imagine users could even select and manipulate them (re-connect them to different verts if the automatically generated solution is not optimal or interferes with a tool). I think this could also help new users understand the difference between an edge they can dissolve and an edge they cannot. It would be intuitive visual feedback to say "dotted edges are different than normal edges for these reasons, and cannot be dissolved". Currently there's a UX issue where a user could create an ngon like the one in my example and attempt to dissolve one of the supporting edges and have it fail without understanding why.
And of course, with the support edges tagged- now you could have tools like loop selection that correctly account for these types of edges and handle the direction change while walking the loops. You could have tools like Bevel detect adjacent support edges and automatically un-check the Loop Slide option. Such a tag would enable a lot of interesting workarounds to holes in faces. And obviously it doesn't solve all of the situations CAD users would want out of a system like this, but I think it checks enough boxes that people would be happy until that point in the future where such an undertaking is feasible.
Added subscriber: @jeacom
From this thread on Blenderartists, my impression is that performance is a bigger concern, people are not happy about how slow edit mode is. If adding more checks for edges or a more complex mesh datastructure could be done without slowing even more the viewport it would be fine.
https://blenderartists.org/t/retopology-design-task/1172311/105
I'm just guessing here, but I can't imagine it would be any more overhead than the other tags we already use- for example, boundary edges and UV Seams are already tagged and updated each time geometry changes, and the average mesh is going to have far fewer ngons with holes than UV seams. Additionally, this 'support edge' check already exists (in one form or another)- the logic to know whether or not an edge supports an ngon is already needed to prevent the user from being able to dissolve it. That's not to diminish the importance of viewport performance, which of course is paramount- but the optimizations mentioned by Pablo and Howard will have far more impact than something like this.
Added subscriber: @AlbertoVelazquez
I think that it's not really necessary. The few users that ask for this is only because they don't have any way to work with nurbs surfaces and they are searching a way to avoid this limitation. From my perspective, although somewhat useful this, its real usefulness would be minimal compared to everything that would imply in the modeling. But taking into account that you can easily avoid the problem today.
If possible it would be more useful to improve the support of Nurbs surfaces, in addition to opening a completely new user sector to blender from the field of architecture and engineering.
Added subscriber: @1D_Inc
Definitely.
The problem is that thing like the level of abstraction is the thing around which software is being built.
Every lower level provides better flexibility, every higher level provides better parameterization ability, but also more restrictions and rules of more complex engine.
Here is system's abstraction level scale:

There is the only way to get higher level of abstraction for such systems in software development - provide a layer of a higher level of abstraction.
So, in case if Blender will get such Ngons, it will no longer be lowest abstraction level mesh anymore. That will be another abstraction level, with ability of converting mesh to it, like editable poly or editable patch in 3dsmax.
Such moves are usually requires better reasons, than cutting multiple holes, because this is how serious industry solutions are usually created.
@1D_Inc: Blender features some abstractions still: after creating a new UV-Sphere, parameters like location and rotation are presented that can be tweaked before committing the shape to a real mesh. I can imagine that the commit could be postponed to allow the user to change some parameters at a later stage (I've seen proposals for this support before). But that should also postpone any mesh-based editing. Those shapes would 'live' as ghosts between the real meshes. A disadvantage is that the algorithm that generated the shape in the first place needs to be linked to the shape and remain available for later adjustments. Not so difficult for the UV-sphere but it may be a tough complication for shapes that are provided by add-ons. Can a user understand the distinction between the two if Blender would not allow 'ghosting' of add-on based shapes?
BUT it would allow application of selected object constraints and object-modifiers such as 'Track To' and 'Boolean' and might circumvent that entire n-gon-with-holes issue.
Problem, that it is not "core mesh abstraction level", like editable patch, for example, but simple decoration)
There were addons that fixes that issue, core features cannot be fixed with simple addons, because reqiures separate math engine.
3Dsmax also have same type of abstrction - you are able to edit new sphere's size only before converting it to regular mesh, that kills that feature, so it is also kind a decorator.
Asked Maya python developer about Ngons. He said
"Previous (old) boolean were creating such Ngons,
new boolean creates support edges:
However, Maya still support multihole Ngons, so edges can be deleted in order to get such Ngons.
But it is a bit not obvious structure type. For example - obj export result:
So it mostly causes more problems than solves.
Multihole Ngons are supported, but you can use them only at your own risk because of compatibility problems."
So abscense of such Ngons basically makes Blender models natively compatible with any other 3d software or format.
Added subscriber: @mavek
Is it possible to identify, via python/bmesh, an ngon with holes versus an ngon without?
I think a good, temporary, fix might be the ability to triangulate just ngons with holes.
The current triangulate options is for everything, including quads. Obviously quads are blenders bread and butter, but ngons without holes seem to work fine now too.
Added subscriber: @Zeirus
Added subscriber: @JosephEagar
Woo! I always regretted my decision not to add holes in faces to the bmesh project; if 3d printers had taken off just a bit sooner I would have. At one point I actually started coding support within the core bmesh data structures but removed it later. It seemed like too big of a change for too niche of a use case.
Nowadays I meet people who use Blender for CAD all the time. I think this is a great idea. I implemented holes in faces in a modeler I wrote years ago (see https://www.youtube.com/watch?v=8Vt0Eu-wygA ), and IIRC the core modelling tools weren't as difficult as I'd feared.
Hey @JosephEagar it is never too late to send a patch for that ;) I do remember the #IFDEFs, but ultimately they were getting on the way since they were never fully implemented.
I wonder if adding holes will make implementing the modelling tools more complicated.
Hi @dfelinto, they do complicate things like dissolve and face splitting. From what I remember from the work I did in AllShape five years ago the hardest part was implementing a decent CDT tessellator, which Blender already has. I remember for subdivision surfaces I literally would triangulate the faces and then run a triangle to quad algorithm; it was "good enough" for a use case that should never happen anyway (why would you use holes in faces with subsurf?).
That said, Campbell might be right to ask if there is a tradeoff between being a high-poly modeler and one suited for CAD. There is a performance cost for complicated, object-oriented BReps. It's not like we were unaware of this; Geoffry Bantle tried to design the core BMesh data structures to be as efficient as possible. If you've heard the game industry's phrase "data-oriented programming" then you know what I mean. Data structures based around lots of small individual objects that are referenced by pointer tend to mess up CPU caches.
@JosephEagar
Well, we are architects, and we have many faces to perforate)
But Blender have pretty much wide range of use. How about the behavior of such ngons with modifiers, UVs unwrap, visualization engines, normals baking, rigging/vertext paint, simulations, import/export formats?
They will influence almost everything.
Paul, that is the question. It'd be nice if we could keep this within the core modelling toolset. In general I'd like to see some way of allowing a more complicated brep in Blender without having to change every last thing. One of these days I or someone else will try and implement a curve network brep in Blender; imagine a world where edges have curves, faces have trim curves, edges store fillets, etc, etc. The only reason I've not done it already (it's one of my research areas) is I'm not sure how to keep the added BRep complexity from metastasizing to all of Blender.
In principle you could represent face holes by connecting with edges to the outer loop and then mark those edges to be dissolved later. I know that smacks of the hated FGon hack, but it might be worth it. I dunno.
Yeah, I am familiar a bit with ACIS SAT solid body and IFC file structures.
I am not sure that it is possible to get stable solid body features in mesh engine without decorative hacks representation. That's the math question)
Sketchup outperformed it, but it was built around such paradigm from the very begining, and it have some limits in order to support such a system.
Changed status from 'Confirmed' to: 'Archived'
There is no developer with time in the foreseeable future to look at that.
There is no developer team in the foreseeable future to form and design a separate semi-solid mesh paradigm, compatible with
list of possible features that can be reached with separate semi-solid mesh paradigm, like n-gons with holes, curvy ACIS edges, adaptive topology, parametric non-destuctive edit poly modeling that will be asked by 3dsmax users, and so one and so one...
This task is staggering and overwhelming in itself, the chanses of success was very low from the very begining.
I'm not sure how it was created with such a non-revealing reason as "This is useful in CAD pipelines".
Nice that it is closed.
Added subscriber: @MarioCarvao