New curves object type #68981

Open
opened 2019-08-21 15:44:08 +02:00 by Dalai Felinto · 123 comments

Status: Under development by the geometry nodes team. Accessible though the "Empty Hair" primitive. Grooming workflow solid, other areas still WIP

Overview

  • New curves object data type
    • Add new datablock and object type
    • Custom data storage, custom data masks
    • Default curve radius and shaping parameters
    • Solve problem with not enough FILTER_ID bits
  • Geometry nodes integration (#95355)
    • Convert existing nodes to new data structure (#95443)
    • New building block nodes
    • Geometry nodes simulation
    • Node group assets for higher level nodes
  • Mesh attachment (to deform curves along with mesh surface) (#95776)
    • Curves datablock has pointer to surface mesh object
    • Add polygon index and UV / barycentric coordinates attributes to indicate where curve is attached
    • Node to deform curves based on surface (#96676)
    • Subdivision surface attachment
  • Full render engine support for curves data-block (#96455)
  • Attribute support
    • Generic attributes
    • Generated texture coordinates
    • Batch cache generation
  • Python API
    • Positions and radius
    • Attributes
    • Add curves and points
    • Remove points
  • Viewport drawing and selection
    • Selection engine integration (#95933)
    • Display options (display random % of curves, ?)
    • Move "strand/strip" display option to curves data-block, rename
  • Initial sculpt mode
    • Brushes (#96259)
    • Sculpting deformed curves (crazyspace)
  • Edit mode
  • Dependency graph copy-on-write integration
    • Refactor mesh runtime storage to be reusable by other objects types
    • Automatic instancing for objects without modifiers, like meshes
    • Copy-on-write for attribute arrays (#95845)
  • Conversion of old particle curves to new curves (#96675)
  • I/O

Relevant links:


**Status:** Under development by the geometry nodes team. Accessible though the "Empty Hair" primitive. Grooming workflow solid, other areas still WIP **Overview** - [x] New curves object data type - [x] Add new datablock and object type - [x] Custom data storage, custom data masks - [x] Default curve radius and shaping parameters - [x] Solve problem with not enough `FILTER_ID` bits - [x] Geometry nodes integration (#95355) - [x] Convert existing nodes to new data structure (#95443) - [x] New building block nodes - [x] Geometry nodes simulation - [x] Node group assets for higher level nodes - [x] Mesh attachment (to deform curves along with mesh surface) (#95776) - [x] Curves datablock has pointer to surface mesh object - [x] Add polygon index and UV / barycentric coordinates attributes to indicate where curve is attached - [x] Node to deform curves based on surface (#96676) - [x] Subdivision surface attachment - [ ] Full render engine support for curves data-block (#96455) - [ ] Attribute support - [x] Generic attributes - [ ] Generated texture coordinates - [x] Batch cache generation - [ ] Python API - [x] Positions and radius - [x] Attributes - [x] Add curves and points - [ ] Remove points - [ ] Viewport drawing and selection - [x] Selection engine integration (#95933) - [ ] Display options (display random % of curves, ?) - [ ] Move "strand/strip" display option to curves data-block, rename - [x] Initial sculpt mode - [x] Brushes (#96259) - [x] Sculpting deformed curves (crazyspace) - [ ] Edit mode - [x] Node group operators (#101778) - [ ] Bezier handle editing (#105038) - [ ] Bezier handles overlay (#105037) - [x] Radius editing (#105055) - [x] Draw tool (#105053) - [ ] Pen tool - [x] Extend operator (#105054) - [ ] Dependency graph copy-on-write integration - [x] Refactor mesh runtime storage to be reusable by other objects types - [ ] Automatic instancing for objects without modifiers, like meshes - [ ] Copy-on-write for attribute arrays (#95845) - [x] Conversion of old particle curves to new curves (#96675) - [ ] I/O - [ ] Alembic import ([D11592](https://archive.blender.org/developer/D11592)) - [ ] Alembic export - [ ] USD import ([D11592](https://archive.blender.org/developer/D11592)) - [x] USD export (#102376) --- **Relevant links:** * [Nodes Object Types ](https://wiki.blender.org/wiki/Source/Nodes/Object_Types) * #78515 (Hair object - Node types design) * #78606 (Hair object - design proposal) --- ### Links * Unreal's [Alembic groom specification](https://docs.unrealengine.com/en-US/Engine/HairRendering/AlembicForGrooms/index.html). * Pixars [PxHair schema ](http://graphics.pixar.com/usd/files/Siggraph2019_Pipeline%20Case%20Studies.pdf) for storing rest pose, guides and scalp
Member

I would be happy to give feedback to developers, since I'm doing a lot of grooming at work (both blender and other softwares).

Full google doc proposal (this proposal could be further developed)
https://docs.google.com/document/d/1VWs_-BkqZ80DcyJitXG3W0bwc71K68oKLGhFkqtZ54w/edit#heading=h.7p2vvzqugwvs

same proposal on right click select
https://blender.community/c/rightclickselect/l1bbbc/

I would be happy to give feedback to developers, since I'm doing a lot of grooming at work (both blender and other softwares). Full google doc proposal (this proposal could be further developed) https://docs.google.com/document/d/1VWs_-BkqZ80DcyJitXG3W0bwc71K68oKLGhFkqtZ54w/edit#heading=h.7p2vvzqugwvs same proposal on right click select https://blender.community/c/rightclickselect/l1bbbc/

You could integrate HairNet in Blender 2.81

HairNet

This creates a Hair from Curve

Demo: Creating Braid in Blender by Nazar Noschenko

You could integrate HairNet in Blender 2.81 [HairNet](https://github.com/Jandals/HairNet) This creates a Hair from Curve Demo: [Creating Braid in Blender by Nazar Noschenko](https://www.youtube.com/watch?v=5pxZtmlqtvc)

Added subscriber: @ChrisWillC

Added subscriber: @ChrisWillC

Added subscriber: @AlbertoVelazquez

Added subscriber: @AlbertoVelazquez

Added subscriber: @c2ba

Added subscriber: @c2ba

Added subscriber: @Enoch11223

Added subscriber: @Enoch11223

Added subscriber: @lemenicier_julien

Added subscriber: @lemenicier_julien

Added subscriber: @LapisSea

Added subscriber: @LapisSea

Added subscriber: @DB3D

Added subscriber: @DB3D

If the particles Hair system will be reworked could we give more features for Scattering things around ?

This is how 95% of users will use the hair system for. And we need some IMPORTANT missing features. Like camera clipping, bounding box for preventing intersection and get clean border, distribute the particles by slope and altitude, a better link between a cycle/eevee material to the particle distribution, and many more really important features/flaw...I try to regroup everything Scatterinng related in this topic. https://devtalk.blender.org/t/future-particle-hair-nodes-discussion-and-everything-wrong-with-hair-particles/9576/39 I will do a proposal when I found everything.

If the particles Hair system will be reworked could we give more features for Scattering things around ? This is how 95% of users will use the hair system for. And we need some IMPORTANT missing features. Like camera clipping, bounding box for preventing intersection and get clean border, distribute the particles by slope and altitude, a better link between a cycle/eevee material to the particle distribution, and many more really important features/flaw...I try to regroup everything Scatterinng related in this topic. https://devtalk.blender.org/t/future-particle-hair-nodes-discussion-and-everything-wrong-with-hair-particles/9576/39 I will do a proposal when I found everything.

Added subscriber: @Pipeliner

Added subscriber: @Pipeliner
Contributor

Added subscriber: @jmztn

Added subscriber: @jmztn

Added subscriber: @iloveyehan

Added subscriber: @iloveyehan

Added subscriber: @Constantina32

Added subscriber: @Constantina32
Brecht Van Lommel changed title from New hair system to New hair object type 2020-01-17 16:48:18 +01:00

Added subscriber: @DuarteRamos

Added subscriber: @DuarteRamos
Sebastián Barschkis was assigned by Dalai Felinto 2020-01-23 17:20:07 +01:00
Author
Owner

Added subscribers: @sebbas, @ZedDB, @ideasman42

Added subscribers: @sebbas, @ZedDB, @ideasman42
Member

Added subscriber: @JacquesLucke

Added subscriber: @JacquesLucke
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk

Added subscriber: @CharlesWardlaw

Added subscriber: @CharlesWardlaw

Added subscriber: @AditiaA.Pratama

Added subscriber: @AditiaA.Pratama

Added subscriber: @DanieleViagi

Added subscriber: @DanieleViagi

Added subscriber: @Andruxa696

Added subscriber: @Andruxa696

This issue was referenced by b0a1cf2c9a

This issue was referenced by b0a1cf2c9ae696b07f7a236bc855a5ab4a493dcb

This issue was referenced by fd53b72871

This issue was referenced by fd53b72871e045dfebfb9ddbe2b3c491491aa913

This issue was referenced by blender/cycles@bbf02be98c

This issue was referenced by blender/cycles@bbf02be98cc12bf4c1e0a1b41da2f914992bc496

This issue was referenced by 9d20f170c7

This issue was referenced by 9d20f170c7c07ac38e86130de591ae98e9c0cf80

Added subscriber: @JerBot

Added subscriber: @JerBot

Added subscriber: @shafan95

Added subscriber: @shafan95

Added subscriber: @DirSurya

Added subscriber: @DirSurya

Added subscriber: @karatastamer

Added subscriber: @karatastamer

Added subscriber: @YegorSmirnov

Added subscriber: @YegorSmirnov

Added subscriber: @frameshift

Added subscriber: @frameshift

Added subscriber: @lucasfalcao3d

Added subscriber: @lucasfalcao3d

Added subscriber: @DarkKnight

Added subscriber: @DarkKnight

Added subscriber: @Yianni

Added subscriber: @Yianni

Added subscriber: @KonstantinsVisnevskis

Added subscriber: @KonstantinsVisnevskis

Added subscriber: @ClinToch

Added subscriber: @ClinToch

Added subscriber: @AlfredTsaizer

Added subscriber: @AlfredTsaizer
Member

Commisioner for the hair object type here.

I have written an overview (work in progress) of the hair object type from a user point of perspective. It's mainly focused on node types and what type of data that needs to be stored per curve and vertices/points. The goal is to have a hair system that works both for real time production (games) and off line rendering (vfx / general cg production). My experience comes from grooming in Blender, Houdini, Zbrush and Maya.

The slides in the link below has been discussed with Project leader: @Sebastián Barschkis (sebbas) 2020-06-01. Most text regarding nodes is written as comments to avoid visual clutter. First focus is nodes, but I can see the use of new operators in the future such as converting curves to hair and vice versa.

https://docs.google.com/presentation/d/1OSVFRQEqPoc92m6_vgWbY0Ar71EcfHNwqIhVdro5CUU/edit?usp=sharing

Commisioner for the hair object type here. I have written an overview (work in progress) of the hair object type from a user point of perspective. It's mainly focused on node types and what type of data that needs to be stored per curve and vertices/points. The goal is to have a hair system that works both for real time production (games) and off line rendering (vfx / general cg production). My experience comes from grooming in Blender, Houdini, Zbrush and Maya. The slides in the link below has been discussed with Project leader: @Sebastián Barschkis (sebbas) 2020-06-01. Most text regarding nodes is written as comments to avoid visual clutter. First focus is nodes, but I can see the use of new operators in the future such as converting curves to hair and vice versa. https://docs.google.com/presentation/d/1OSVFRQEqPoc92m6_vgWbY0Ar71EcfHNwqIhVdro5CUU/edit?usp=sharing
Author
Owner

@DanielBystedt can you do upload this here in PDF, or create a wiki document (or even a design task) with this? external links tend to be invalid after awhile. Thank you

@DanielBystedt can you do upload this here in PDF, or create a wiki document (or even a design task) with this? external links tend to be invalid after awhile. Thank you
Member

In #68981#968652, @dfelinto wrote:
@DanielBystedt can you do upload this here in PDF, or create a wiki document (or even a design task) with this? external links tend to be invalid after awhile. Thank you

@dfelinto

Sure thing! What would be most suitable? Design task or wiki? I'd like to learn what the best approach is so I can do stuff like this properly in the future.

If Design task:
I guess I should tag it with "Nodes & Physics" so it ends up in the workboard
https://developer.blender.org/project/board/101/
Should it go in the "long term" slot of the workboard?

If wiki:
I haven't created a wiki page before and feel pretty unsure how to proceed. Is it somewhere here it should be created? https://wiki.blender.org/wiki/Main_Page

> In #68981#968652, @dfelinto wrote: > @DanielBystedt can you do upload this here in PDF, or create a wiki document (or even a design task) with this? external links tend to be invalid after awhile. Thank you @dfelinto Sure thing! What would be most suitable? Design task or wiki? I'd like to learn what the best approach is so I can do stuff like this properly in the future. If Design task: I guess I should tag it with "Nodes & Physics" so it ends up in the workboard https://developer.blender.org/project/board/101/ Should it go in the "long term" slot of the workboard? If wiki: I haven't created a wiki page before and feel pretty unsure how to proceed. Is it somewhere here it should be created? https://wiki.blender.org/wiki/Main_Page
Author
Owner

Given that the design may change during the project I would suggest a design task. Once the project is more mature we then move it to the wiki. And yes, Long-Term would be the right column, thank you!

Given that the design may change during the project I would suggest a design task. Once the project is more mature we then move it to the wiki. And yes, Long-Term would be the right column, thank you!

Added subscriber: @rwman

Added subscriber: @rwman
Member

In #68981#969323, @dfelinto wrote:
Given that the design may change during the project I would suggest a design task. Once the project is more mature we then move it to the wiki. And yes, Long-Term would be the right column, thank you!

Hi again! I have migrated my google doc stuff into two design tasks

Hair object - Node types design
https://developer.blender.org/T78515

Hair object - design
https://developer.blender.org/T78606

I have set these tasks as child tasks of this task. Perhaps it would be a good idea to add them into Relevant links: in this task?

> In #68981#969323, @dfelinto wrote: > Given that the design may change during the project I would suggest a design task. Once the project is more mature we then move it to the wiki. And yes, Long-Term would be the right column, thank you! Hi again! I have migrated my google doc stuff into two design tasks Hair object - Node types design https://developer.blender.org/T78515 Hair object - design https://developer.blender.org/T78606 I have set these tasks as child tasks of this task. Perhaps it would be a good idea to add them into **Relevant links:** in this task?
Member

Added subscriber: @eyecandy

Added subscriber: @eyecandy

Added subscriber: @KidTempo

Added subscriber: @KidTempo
Member

Added subscriber: @zanqdo

Added subscriber: @zanqdo

Added subscriber: @DonCoyote

Added subscriber: @DonCoyote

Added subscriber: @Beryesa

Added subscriber: @Beryesa

Added subscriber: @brecht

Added subscriber: @brecht

@sebbas will likely start working on this project soon, So he, @JacquesLucke and I had a meeting about it. The idea of having a hair datablock and modifiers is quite clear and agreed on.

The main decision to make is the scope of this project and how to get to a minimum viable product (MVP) as quickly as possible. The main target of this is projects like open movies at the Blender Institute. That means features like hair cards for game engines and related tools and modifiers are not a priority. Further, since we want to get something working as quickly as possible, geometry nodes for hair with lots of small nodes for fine control are also not the first thing we will implement.

Rather, we would start by implemented the most important modifiers in the modifier stack for hair: Distribute, Children, Dynamics, Deform along Surface and various Shaping modifiers. We envision the modifier stack will remain after the addition of geometry nodes, as an interface with high level parameters for a more low level / technical node graph (see also particle nodes discussion). These modifiers would also naturally be available as nodes in geometry nodes later on, but they will work fine in the modifier stack to start with.

There is a long list of tasks in the topic description, but in order to get to an MVP they should not be done in the current order. Rather we would start with these steps in order to get towards something that works:

  • Hair datablock pointer to (mesh) surface object that hair is attached to
  • Basic implementation of 3 modifiers: Distribution, Children and Shaping
  • Implementation of Deform along Surface modifier and associated data structures for attaching hair to surface objects
  • Edit mode for hair: duplicate existing code from particles and make work with Hair datablock, with all the same tools (with a few exceptions)
  • Hair Dynamics modifier

This also means that most of the contents of the design docs by @DanielBystedt are not yet relevant in the first stage of getting an MVP. Rather adding more advanced tools and nodes would come later, and as far as I can tell the specifics of those designs do not require changes to the basic design presented in this task.

@sebbas will likely start working on this project soon, So he, @JacquesLucke and I had a meeting about it. The idea of having a hair datablock and modifiers is quite clear and agreed on. The main decision to make is the scope of this project and how to get to a minimum viable product (MVP) as quickly as possible. The main target of this is projects like open movies at the Blender Institute. That means features like hair cards for game engines and related tools and modifiers are not a priority. Further, since we want to get something working as quickly as possible, geometry nodes for hair with lots of small nodes for fine control are also not the first thing we will implement. Rather, we would start by implemented the most important modifiers in the modifier stack for hair: Distribute, Children, Dynamics, Deform along Surface and various Shaping modifiers. We envision the modifier stack will remain after the addition of geometry nodes, as an interface with high level parameters for a more low level / technical node graph (see also particle nodes discussion). These modifiers would also naturally be available as nodes in geometry nodes later on, but they will work fine in the modifier stack to start with. There is a long list of tasks in the topic description, but in order to get to an MVP they should not be done in the current order. Rather we would start with these steps in order to get towards something that works: * Hair datablock pointer to (mesh) surface object that hair is attached to * Basic implementation of 3 modifiers: Distribution, Children and Shaping * Implementation of Deform along Surface modifier and associated data structures for attaching hair to surface objects * Edit mode for hair: duplicate existing code from particles and make work with Hair datablock, with all the same tools (with a few exceptions) * Hair Dynamics modifier This also means that most of the contents of the design docs by @DanielBystedt are not yet relevant in the first stage of getting an MVP. Rather adding more advanced tools and nodes would come later, and as far as I can tell the specifics of those designs do not require changes to the basic design presented in this task.

It's interesting to consider the way Pixar internally does hair with the PxHair USD schema , as an (additional?) workflow we could support.

Current Blender hair works by having a set of guide curves, and then child hairs are generated from them using a fixed algorithm and various parameters. With nodes to generate child hairs there will be more user control, but still not at the level where you can add, remove or position the final hairs in edit mode.

The way the PxHair works is that there is a complete hair rest pose, which is then deformed using guide curves, rather than being generated from guide curves. This deformation works like an armature modifier, where each hair has an associated set of guide curves with weights (instead of bones).

This is compatible with the design and could be implemented by supporting hair vertex groups, a deform modifier and some algorithm to generate guide curves and bind to the high res hairs. But we will need a child hair modifier regardless to generate the rest pose, so implementing such a guide curve deformation system can be done after the MVP.

It's interesting to consider the way Pixar internally does hair with the [PxHair USD schema ](http://graphics.pixar.com/usd/files/Siggraph2019_Pipeline%20Case%20Studies.pdf), as an (additional?) workflow we could support. Current Blender hair works by having a set of guide curves, and then child hairs are generated from them using a fixed algorithm and various parameters. With nodes to generate child hairs there will be more user control, but still not at the level where you can add, remove or position the final hairs in edit mode. The way the PxHair works is that there is a complete hair rest pose, which is then deformed using guide curves, rather than being generated from guide curves. This deformation works like an armature modifier, where each hair has an associated set of guide curves with weights (instead of bones). This is compatible with the design and could be implemented by supporting hair vertex groups, a deform modifier and some algorithm to generate guide curves and bind to the high res hairs. But we will need a child hair modifier regardless to generate the rest pose, so implementing such a guide curve deformation system can be done after the MVP.
Member

Amazing new that this project is about to start soon! Thanks for all the info @brecht.

I understand what you are saying and I completely agree that a MVP with the bullet points that you listed is a great way of starting the project. I'm available for testing and feedback, so feel free to reach out to me (@DanielBystedt ) at blender.chat

Amazing new that this project is about to start soon! Thanks for all the info @brecht. I understand what you are saying and I completely agree that a MVP with the bullet points that you listed is a great way of starting the project. I'm available for testing and feedback, so feel free to reach out to me (@DanielBystedt ) at blender.chat
Member

What is still unclear to me in the current design is at which point hair editmode comes into play.

  • When we talk about Distribute or Deform along Surface modifiers, this sounds like initial data (something like what you can control in the Emission panel atm)
  • Once you are using editmode though, this is then locked, it is not "live" anymore in current blender hair [and to me, it sounds like it would not make too much sense to have this live]
  • If I understand correctly, the Children and Shaping (maybe I lack clear description of what functionality is included in Shaping) modifiers would build on top of editmode data.
  • So, from the user perspective, isnt this more like a 3-step process? (- initial distribution --> - editmode shaping --> - additional modifiers (children, simulation, clump, kink, etc))
  • How would this work together in a single nodetree? Or, if this is a stack for now, would editmode always work with data from the Distribute modifier? The Deform along Surface modifier?
  • Or could we specify at which point in the modifier stack editmode will pick its starting data from?

Maybe this has been discussed already (not sure because I was not in said meeting), would be nice to have that knowledge shared in this thread as well.

What is still unclear to me in the current design is at which point hair editmode comes into play. - When we talk about `Distribute` or `Deform along Surface` modifiers, this sounds like initial data (something like what you can control in the `Emission` panel atm) - Once you are using editmode though, this is then locked, it is not "live" anymore in current blender hair [and to me, it sounds like it would not make too much sense to have this live] - If I understand correctly, the `Children` and `Shaping` (maybe I lack clear description of what functionality is included in Shaping) modifiers would build **on top of** editmode data. - So, from the user perspective, isnt this more like a 3-step process? (- [x] initial distribution --> - [x] editmode shaping --> - [x] additional modifiers (children, simulation, clump, kink, etc)) - How would this work together in a single nodetree? Or, if this is a stack for now, would editmode always work with data from the `Distribute` modifier? The `Deform along Surface` modifier? - Or could we specify at which point in the modifier stack editmode will pick its starting data from? Maybe this has been discussed already (not sure because I was not in said meeting), would be nice to have that knowledge shared in this thread as well.

@lichtwerk, it would work the same as meshes, all modifiers work on top of edit mode data. If you want to edit the output of the Distribute modifier, you apply the modifier.

It's up to the user which modifiers they want to apply or keep in the stack. You might want to apply some Shaping modifier to the parent hairs, or you might want to edit every hair individually and apply the Children modifier.

@lichtwerk, it would work the same as meshes, all modifiers work on top of edit mode data. If you want to edit the output of the Distribute modifier, you apply the modifier. It's up to the user which modifiers they want to apply or keep in the stack. You might want to apply some Shaping modifier to the parent hairs, or you might want to edit every hair individually and apply the Children modifier.
Member

Maybe the question is also about the Distribute and Deform along Surface modifiers in general:

  • those are not meant to create guide data, right? So you would not have stuff like number of hairs, number of segments etc. defined here, right?
  • those are meant to give existing data a starting "shape", right?

If above is true, the question of my previous comments remains: does editmode work before or after?
I am trying to wrap my head around the concept of the Deform along Surface modifier more:

  • is this - to define a guide shape from a "default" guide? or is this - to bind an (already sculpted - in editmode - guide) to a deforming surface?
  • if - : is this more like Shrinkwrap for meshes? or is this more like Mesh Deform(needing something like binding information)?
Maybe the question is also about the `Distribute` and `Deform along Surface` modifiers in general: - those are not meant to **create** guide data, right? So you would not have stuff like number of hairs, number of segments etc. defined here, right? - those are meant to give existing data a starting "shape", right? If above is true, the question of my previous comments remains: does editmode work before or after? I am trying to wrap my head around the concept of the `Deform along Surface` modifier more: - is this - [x] to define a guide shape from a "default" guide? or is this - [x] to bind an (already sculpted - in editmode - guide) to a deforming surface? - if - [x]: is this more like `Shrinkwrap` for meshes? or is this more like `Mesh Deform`(needing something like binding information)?
Member

@brecht: OK, we were typing at the same time.

So, I guess this answers the questions I had, yes.
Will be interesting to see how the Distribute and Deform Along Surface behave in the end with already existing editmode shaping, but I guess this is details to see while working on this.

@brecht: OK, we were typing at the same time. So, I guess this answers the questions I had, yes. Will be interesting to see how the `Distribute` and `Deform Along Surface` behave in the end with already existing editmode shaping, but I guess this is details to see while working on this.
Member

Distribution modifier: create hairs distributed on surface object

Actually, that one question remains: Is the Distribute modifier actually responsible for creating the initial data [number of hairs etc.]? I assume it is not.

  • If it is not, then the Add Hair operator needs to expose some more initial properties like number of hairs, segments? Or the hair datablock needs to?
  • If it is, then a Distribute modifier is more or less mandatory? (no editmode without it?)
> Distribution modifier: create hairs distributed on surface object Actually, that one question remains: Is the `Distribute` modifier actually responsible for **creating** the initial data [number of hairs etc.]? I assume it is not. - If it is not, then the `Add Hair` operator needs to expose some more initial properties like number of hairs, segments? Or the hair datablock needs to? - If it is, then a Distribute modifier is more or less mandatory? (no editmode without it?)

The Distribute modifier will create the actual hairs. It is not required before going into edit mode, because the Add tool there will be able to create hairs on the surface object. However for convenience, most of the time you would use a Distribute modifier and adding a new Hair object from the Add menu would already have such a modifier.

The Distribute modifier will create the actual hairs. It is not required before going into edit mode, because the Add tool there will be able to create hairs on the surface object. However for convenience, most of the time you would use a Distribute modifier and adding a new Hair object from the Add menu would already have such a modifier.

Perhaps we could implement a better distribute model than what we have currently in blender?

This for example: http://www.cemyuksel.com/research/sampleelimination/

Because of the more even and "natural" pattern users would often need fewer hairs to cover the mesh.

I bring this up because we could use this method to define a density of hairs. So when manually adding hairs in post to a surface, it would not add more hair to parts that are already dense enough.
I don't think it is possible to do this with the current "add hair" brush?

Perhaps we could implement a better distribute model than what we have currently in blender? This for example: http://www.cemyuksel.com/research/sampleelimination/ Because of the more even and "natural" pattern users would often need fewer hairs to cover the mesh. I bring this up because we could use this method to define a density of hairs. So when manually adding hairs in post to a surface, it would not add more hair to parts that are already dense enough. I don't think it is possible to do this with the current "add hair" brush?

This distribution model looks great and due to its deterministic nature and should be considered for more than adding hairs but also removing/hiding them. For example this open the gates to more advanced hair data structures that would allow for much more performant and powerful combing. (analogous to multires sculpt) This has wide implications so is probably out of the scope of this task but the node based nature of this system should make it easier to create at a later date.

This distribution model looks great and due to its deterministic nature and should be considered for more than adding hairs but also removing/hiding them. For example this open the gates to more advanced hair data structures that would allow for much more performant and powerful combing. (analogous to multires sculpt) This has wide implications so is probably out of the scope of this task but the node based nature of this system should make it easier to create at a later date.

Added subscriber: @dodododorian

Added subscriber: @dodododorian

Speaking about a distribution modifier, here's how we handle this in houdini :

  • it will distribute points as expected on a mesh faces/edges/vertex/volume from an algorythm of choice
  • there's an important 'relax' iteration, that will try to distance each points from a given radius, to prevent intersection (see ->This Gif <-)
  • there's an option to force a point-count OR to set a certain point-count per square area, a highly important option, right now blender only propose a fixed number of particle and no options per density.
Speaking about a distribution modifier, here's how we handle this in houdini : - it will distribute points as expected on a mesh ***faces/edges/vertex/volume*** from an algorythm of choice - there's an important ***'relax' iteration***, that will try to distance each points from a given radius, to ***prevent intersection*** (see [->This Gif <-](https://media.giphy.com/media/kgCxilcRstyWcuOTtR/giphy.gif)) - there's an option to force a point-count OR to set a certain point-count per square area, a highly important option, right now blender only propose a fixed number of particle and no options per density.

Removed subscriber: @AlbertoVelazquez

Removed subscriber: @AlbertoVelazquez

Added subscriber: @MohamadFaisalAmir

Added subscriber: @MohamadFaisalAmir

Added subscriber: @AlRedd-3

Added subscriber: @AlRedd-3

Hi! Has work started on this, yet? :)

Hi! Has work started on this, yet? :)

Added subscriber: @Brunomendesgussoni

Added subscriber: @Brunomendesgussoni

Removed subscriber: @Brunomendesgussoni

Removed subscriber: @Brunomendesgussoni

Added subscriber: @Brunomendesgussoni

Added subscriber: @Brunomendesgussoni

Added subscriber: @AlanKnittel

Added subscriber: @AlanKnittel

Just putting our two cents in that we would also like to see the basics asap, as we're upgrading one of the original Cosmos Laundromat characters as soon as the new hair (Fur for us) system is available.

Just putting our two cents in that we would also like to see the basics asap, as we're upgrading one of the original Cosmos Laundromat characters as soon as the new hair (Fur for us) system is available.

Added subscriber: @Likkez-2

Added subscriber: @Likkez-2

Added subscriber: @MeshVoid

Added subscriber: @MeshVoid

Added subscriber: @aicedor

Added subscriber: @aicedor

Added subscriber: @mindmark

Added subscriber: @mindmark

Has there been any new thoughts on this task? Scheduled for an alpha release?

Has there been any new thoughts on this task? Scheduled for an alpha release?

Added subscriber: @wenyuan60

Added subscriber: @wenyuan60

Hello,I want to know when the new hair will be released

Hello,I want to know when the new hair will be released

Added subscriber: @FrancoisRimasson

Added subscriber: @FrancoisRimasson

Removed subscriber: @shafan95

Removed subscriber: @shafan95

Added subscriber: @ddade

Added subscriber: @ddade

Added subscriber: @Peine_Perdue

Added subscriber: @Peine_Perdue

Added subscriber: @strangerman

Added subscriber: @strangerman

Added subscriber: @AieKick

Added subscriber: @AieKick

Hey guys, now that there's a few more curve tools in geometry nodes, at what point will this start to be tackled a bit? A new hair system is sorely needed, compared to other hair systems the one we have now is way behind

Hey guys, now that there's a few more curve tools in geometry nodes, at what point will this start to be tackled a bit? A new hair system is sorely needed, compared to other hair systems the one we have now is way behind

Added subscriber: @NBlen

Added subscriber: @NBlen

I too would like to know if this will be updated at any time. It is rather difficult to work with realistic fur in blender without a new system..

I too would like to know if this will be updated at any time. It is rather difficult to work with realistic fur in blender without a new system..

This is an extremely interesting design. Is it going to be implemented anytime soon?

This is an extremely interesting design. Is it going to be implemented anytime soon?

As always, looking for you to raise the priority of this over other things. We're modeling a cat that will need fur.

As always, looking for you to raise the priority of this over other things. We're modeling a cat that will need fur.

This comment was removed by @AlRedd-3

*This comment was removed by @AlRedd-3*

Added subscriber: @pabloz10

Added subscriber: @pabloz10

OMG this will be an XGEN killer 🗡 I'm so Excited to see this in 3.X

OMG this will be an XGEN killer 🗡 I'm so Excited to see this in 3.X

Added subscriber: @TheCharacterhero-4

Added subscriber: @TheCharacterhero-4

Added subscriber: @Jaye.Antoni_Whyldz

Added subscriber: @Jaye.Antoni_Whyldz
Sebastián Barschkis was unassigned by Brecht Van Lommel 2021-11-30 16:45:55 +01:00

Added subscriber: @Gareth-Jensen-1

Added subscriber: @Gareth-Jensen-1

Added subscriber: @SteffenD

Added subscriber: @SteffenD

Added subscriber: @Roughy

Added subscriber: @Roughy

Added subscriber: @Defka

Added subscriber: @Defka

Added subscriber: @shwaky

Added subscriber: @shwaky

This comment was removed by @shwaky

*This comment was removed by @shwaky*
Jacques Lucke changed title from New hair object type to New curves object type 2022-03-23 16:43:16 +01:00

Added subscriber: @dodo-2

Added subscriber: @dodo-2

This comment was removed by @dodo-2

*This comment was removed by @dodo-2*

Added subscriber: @Floreum

Added subscriber: @Floreum

Added subscriber: @paulgolter

Added subscriber: @paulgolter

Added subscriber: @dlc17

Added subscriber: @dlc17

Added subscriber: @Plyro

Added subscriber: @Plyro

Added subscriber: @JoseConseco

Added subscriber: @JoseConseco

Added subscriber: @shinyuu

Added subscriber: @shinyuu

Added subscriber: @Ducktor-Cid

Added subscriber: @Ducktor-Cid

Added subscriber: @Sarfaraz-Yeaseen

Added subscriber: @Sarfaraz-Yeaseen

Added subscriber: @Carl-Skanoy

Added subscriber: @Carl-Skanoy

Added subscriber: @BlenderSith

Added subscriber: @BlenderSith

Added subscriber: @Metrons

Added subscriber: @Metrons
Contributor

Added subscriber: @povmaniac

Added subscriber: @povmaniac
Contributor

Added subscriber: @persun

Added subscriber: @persun
Member

Added subscriber: @SonnyCampbell_Unity

Added subscriber: @SonnyCampbell_Unity
Member

FYI - I've created a task for supporting the new curves for USD export, but don't have permission to update this task

https://developer.blender.org/T102376

FYI - I've created a task for supporting the new curves for USD export, but don't have permission to update this task https://developer.blender.org/T102376

@SonnyCampbell_Unity, I've given you the permissions to edit tasks now.

@SonnyCampbell_Unity, I've given you the permissions to edit tasks now.

Added subscriber: @Jarrett-Johnson

Added subscriber: @Jarrett-Johnson

Added subscriber: @s12a

Added subscriber: @s12a

This is the thing that I am most excited about. Is there any hint for when

Python API
Add/remove curves and points

will be worked on?

This is the thing that I am most excited about. Is there any hint for when Python API Add/remove curves and points will be worked on?

Added subscriber: @Moppy

Added subscriber: @Moppy
Philipp Oeser removed the
Interest
Nodes & Physics
label 2023-02-10 08:47:53 +01:00
Brecht Van Lommel added
Priority
Normal
and removed
Priority
High
labels 2023-02-15 10:24:54 +01:00
Hans Goudey added this to the Nodes & Physics project 2023-02-21 18:27:10 +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 Assignees
84 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#68981
No description provided.