Initial Particle Nodes #68636

Closed
opened 2019-08-14 11:16:31 +02:00 by Jacques Lucke · 19 comments
Member

This document lists what needs to be done to get an initial version of Particle Nodes in master. The merge is currently scheduled to be part of Blender 2.82.

The function branch consists of four main parts:

  1. C++ libraries in blenlib. (depends on nothing)
  2. Python code that defines the user interface including the nodes. (depends on nothing)
  3. The functions framework with a runtime type system that supports multiple backends. (depends on blenlib and the python ui)
  4. The bparticles system that parses a particle node tree and performs the simulation. (depends on blenlib, functions and the python ui)

Libraries

While I have some changes planned (especially for the hash maps/sets), this code can go in at any time. A significant portion of this code is covered by unit tests. I happily continue improving and maintaining it when it is in master.

Also see:

Nodes UI

As mentioned, nodes are currently implemented in Python. I happily move this to C/C++ at some point, but it does not seem worth it right now.

Also see:

Functions

The function system consists of a couple of components which can be categorized into:

  • Backend: This is purely C++ and does not depend on the user interface at all.
  • Frontend: This takes a node tree as input and creates an internal data flow graph from it that can be handled by the backend.

The backend can be merged as soon as the libraries are merged. It should not impact anything else.

For the frontend to make sense, the node ui needs to be merged as well. This could be merged without actually exposing a new node tree type to the user.
Currently, there are also two new modifiers that I use for testing of the function system. I do not expect them to be merged.

Also see:

Particle System

While these other parts could almost be merged as they are, I have to spend more time on the actual particle system.
One particle simulation backend that is sufficient for a variety of particle effects is working, but the user interface is still lacking.

These things still have to be worked out:

  • How to structure the node tree exactly? I had an original proposal, but there are some weak points that need to be solved (see link below).
  • Where does the output of the simulation go? Currently, the particles are just output on a mesh as vertices. This might depend on the introduction of a new point cloud data type. Also, the output of the particle simulation might be particles of different types, that users will want to use different materials for.
  • Which nodes do we actually want to have? Currently, most nodes are just for testing and don't offer enough options for artists. I'll create separate design tasks for different categories soon.
  • How to integrate this with the current cache system? The problems of the current caching system are well known. There is probably not enough time to implement a new system before Blender 2.82.

Possible compromises to get this to merge sooner (not saying that we should not do these things, but we might need to trade-off features vs. time-to-market here):

  • No node group support. While it is not too difficult to implement node groups, it is still unclear how they should work exactly (see link below). We could postpone that until we have a better idea of how artists want to group things.
  • No integration with the current caching system. There is already very simple caching in the modifier directly. That could be made more usable. Then we could implement a new caching system a bit later and use it when it is ready.
  • No ability to use separate materials for different particle types. It should still be possible to get the particle type in a shader via an attribute, to shade different types differently nevertheless.

Also see:

This document lists what needs to be done to get an initial version of Particle Nodes in master. The merge is currently scheduled to be part of Blender 2.82. The function branch consists of four main parts: 1. C++ libraries in blenlib. (depends on nothing) 2. Python code that defines the user interface including the nodes. (depends on nothing) 3. The functions framework with a runtime type system that supports multiple backends. (depends on blenlib and the python ui) 4. The bparticles system that parses a particle node tree and performs the simulation. (depends on blenlib, functions and the python ui) ## Libraries While I have some changes planned (especially for the hash maps/sets), this code can go in at any time. A significant portion of this code is covered by unit tests. I happily continue improving and maintaining it when it is in master. Also see: - Motivation for new data structures in blenlib: https://wiki.blender.org/wiki/User:JacquesLucke/Documents/BasicDataStructures ## Nodes UI As mentioned, nodes are currently implemented in Python. I happily move this to C/C++ at some point, but it does not seem worth it right now. Also see: - Proposal for a node ui framework that is less static than the one used by other node systems in Blender: https://wiki.blender.org/wiki/Source/Nodes/NodeInterfaceFramework ## Functions The function system consists of a couple of components which can be categorized into: - Backend: This is purely C++ and does not depend on the user interface at all. - Frontend: This takes a node tree as input and creates an internal data flow graph from it that can be handled by the backend. The backend can be merged as soon as the libraries are merged. It should not impact anything else. For the frontend to make sense, the node ui needs to be merged as well. This could be merged without actually exposing a new node tree type to the user. Currently, there are also two new modifiers that I use for testing of the function system. I do not expect them to be merged. Also see: - Original document explaining the need for a function system: https://wiki.blender.org/wiki/Source/Nodes/EverythingNodes - Slightly outdated but still mostly accurate explanation of the function system: https://wiki.blender.org/wiki/Source/Nodes/InitialFunctionsSystem ## Particle System While these other parts could almost be merged as they are, I have to spend more time on the actual particle system. One particle simulation backend that is sufficient for a variety of particle effects is working, but the user interface is still lacking. These things still have to be worked out: - How to structure the node tree exactly? I had an original proposal, but there are some weak points that need to be solved (see link below). - Where does the output of the simulation go? Currently, the particles are just output on a mesh as vertices. This might depend on the introduction of a new point cloud data type. Also, the output of the particle simulation might be particles of different types, that users will want to use different materials for. - Which nodes do we actually want to have? Currently, most nodes are just for testing and don't offer enough options for artists. I'll create separate design tasks for different categories soon. - How to integrate this with the current cache system? The problems of the current caching system are well known. There is probably not enough time to implement a new system before Blender 2.82. Possible compromises to get this to merge sooner (not saying that we should not do these things, but we might need to trade-off features vs. time-to-market here): - No node group support. While it is not too difficult to implement node groups, it is still unclear how they should work exactly (see link below). We could postpone that until we have a better idea of how artists want to group things. - No integration with the current caching system. There is already very simple caching in the modifier directly. That could be made more usable. Then we could implement a new caching system a bit later and use it when it is ready. - No ability to use separate materials for different particle types. It should still be possible to get the particle type in a shader via an attribute, to shade different types differently nevertheless. Also see: - Original node ui proposal: https://wiki.blender.org/wiki/Source/Nodes/ParticleSystemNodes - Weak points of the original proposal explained and a possible solution: https://wiki.blender.org/wiki/Source/Nodes/UpdatedParticleNodesUI - Yet another updated UI: https://wiki.blender.org/wiki/Source/Nodes/UpdatedParticleNodesUI2 - Rough design of the actual simulation code: https://wiki.blender.org/wiki/Source/Nodes/ParticleSystemCodeArchitecture - Overview of different kinds of caches we need: https://wiki.blender.org/wiki/Source/Nodes/Caching - Proposal for new object types: https://wiki.blender.org/wiki/Source/Nodes/Object_Types
Jacques Lucke self-assigned this 2019-08-14 11:16:31 +02:00
Author
Member

Added subscribers: @JacquesLucke, @brecht

Added subscribers: @JacquesLucke, @brecht
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Member

Added subscriber: @OmarEmaraDev

Added subscriber: @OmarEmaraDev
Member

Added subscriber: @Mets

Added subscriber: @Mets
Member

I absolutely love the amount of information you're making available about how these systems work/will work and how everything is coming along. I played around with the build yesterday and it looked pretty awesome! ^^ I managed to make some particles bounce off a plane :)

I feel like to answer some of these questions, you should put a "beta version" in front of artists, and advertise it(Blender Today), and see what they do with it and what they have to say about it.

My understanding was always that this is planned to be merged no sooner than 2.82, if we are lucky. It sounds like you want to get it in sooner, but I for one, am happy to wait for something that's more polished. Take your time man.

I absolutely love the amount of information you're making available about how these systems work/will work and how everything is coming along. I played around with the build yesterday and it looked pretty awesome! ^^ I managed to make some particles bounce off a plane :) I feel like to answer some of these questions, you should put a "beta version" in front of artists, and advertise it(Blender Today), and see what they do with it and what they have to say about it. My understanding was always that this is planned to be merged no sooner than 2.82, if we are lucky. It sounds like you want to get it in sooner, but I for one, am happy to wait for something that's more polished. Take your time man.

Added subscriber: @Ace_Dragon

Added subscriber: @Ace_Dragon

The compromises to get this in sooner seem a bit harsh in my book, so waiting until 2.82 at the earliest (especially with the 3 month release schedule) appears reasonable.

The compromises to get this in sooner seem a bit harsh in my book, so waiting until 2.82 at the earliest (especially with the 3 month release schedule) appears reasonable.

Added subscriber: @0o00o0oo

Added subscriber: @0o00o0oo

Added subscriber: @Andrewm90

Added subscriber: @Andrewm90

Added subscriber: @lemenicier_julien

Added subscriber: @lemenicier_julien

Added subscriber: @BryceW

Added subscriber: @BryceW

Added subscriber: @Pipeliner

Added subscriber: @Pipeliner

Added subscriber: @zebus3dream

Added subscriber: @zebus3dream

Added subscriber: @DirSurya

Added subscriber: @DirSurya
Contributor

Added subscriber: @RedMser

Added subscriber: @RedMser

Removed subscriber: @DirSurya

Removed subscriber: @DirSurya

Added subscriber: @DerTee

Added subscriber: @DerTee

Added subscriber: @Cigitia

Added subscriber: @Cigitia
Philipp Oeser removed the
Interest
Nodes & Physics
label 2023-02-10 08:47:54 +01:00
Author
Member

Particle nodes will be worked on again as part of geometry nodes.

Particle nodes will be worked on again as part of geometry nodes.
Blender Bot added
Status
Archived
and removed
Status
Confirmed
labels 2023-02-22 18:10:39 +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
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#68636
No description provided.