New Curves data block #95355

Open
opened 2022-01-31 13:25:49 +01:00 by Jacques Lucke · 20 comments
Member

This is a follow up task based on discussions we had about #94193.

Currently, the curve object contains three distinct object types: curves, surfaces and text. We want to split those up into separate types, because there is no real reason for why they are combined into a single type.
This task focuses on introducing a new Curves data type which we will also need for hair and geometry nodes processing of curves.

Initial steps:

    • Rename existing (experimental) Hair data block to Curves. In the ui it will be called Hair Curves for now to distinguish it from the old curve type.
    • Decide on and implement exact data structure used for curves.
    • Should be stored compactly in continuous arrays.
    • Should support arbitrary attributes on points and splines.
    • Ideally, the actual curve data structure is embedded into the Curves data block as a separate struct, so that the same struct could e.g. be used for grease pencil.
    • Refactor geometry nodes to use the Curves data block instead of CurveEval. (#95443)
    • Remove the runtime-only CurveEval data structure added for geometry nodes.
    • Render geometry nodes curves as with the new type in Cycles and Eevee (#96455)
    • Curves sculpt mode that is mostly focused on hair use cases
    • Curves edit mode, similar to existing curve edit mode

Further in the future:

    • Add existing necessary features from the legacy curve object (features like shape keys may add complexity)
    • Use versioning to convert legacy curve objects to the new curves object
    • Add support for simulations through a generic simulation system involving geometry nodes
    • Use versioning to convert hair particle systems to the new curves object
This is a follow up task based on discussions we had about #94193. Currently, the curve object contains three distinct object types: curves, surfaces and text. We want to split those up into separate types, because there is no real reason for why they are combined into a single type. This task focuses on introducing a new `Curves` data type which we will also need for hair and geometry nodes processing of curves. Initial steps: * - [x] Rename existing (experimental) `Hair` data block to `Curves`. In the ui it will be called `Hair Curves` for now to distinguish it from the old curve type. * - [x] Decide on and implement exact data structure used for curves. * Should be stored compactly in continuous arrays. * Should support arbitrary attributes on points and splines. * Ideally, the actual curve data structure is embedded into the `Curves` data block as a separate struct, so that the same struct could e.g. be used for grease pencil. * - [x] Refactor geometry nodes to use the `Curves` data block instead of `CurveEval`. (#95443) * - [x] Remove the runtime-only `CurveEval` data structure added for geometry nodes. * - [ ] Render geometry nodes curves as with the new type in Cycles and Eevee (#96455) * - [x] Curves sculpt mode that is mostly focused on hair use cases * - [ ] Curves edit mode, similar to existing curve edit mode Further in the future: * - [ ] Add existing necessary features from the legacy curve object (features like shape keys may add complexity) * - [ ] Use versioning to convert legacy curve objects to the new curves object * - [ ] Add support for simulations through a generic simulation system involving geometry nodes * - [ ] Use versioning to convert hair particle systems to the new curves object
Author
Member

Added subscriber: @JacquesLucke

Added subscriber: @JacquesLucke

Added subscriber: @DuarteRamos

Added subscriber: @DuarteRamos

Added subscriber: @SteffenD

Added subscriber: @SteffenD

Added subscriber: @Garek

Added subscriber: @Garek

Added subscriber: @guitargeek

Added subscriber: @guitargeek
Hans Goudey changed title from New Curves data block. to New Curves data block 2022-02-02 17:38:46 +01:00
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'

This issue was referenced by f59767ff97

This issue was referenced by f59767ff97295404dade1bc0d494cfe81e8a97bb

This issue was referenced by fe1816f67f

This issue was referenced by fe1816f67fbc6aaf383ec77847d668367335d093

Added subscriber: @JerBot

Added subscriber: @JerBot

This issue was referenced by c324cf1539

This issue was referenced by c324cf153924ae2ec5b7c59eabff71652847aeae

This issue was referenced by ddf189892c

This issue was referenced by ddf189892c596d939228cc531b775bfd6708bb2d

This issue was referenced by 9ec12c26f1

This issue was referenced by 9ec12c26f16ea3da1e6de95d5d5daf1057464830

This issue was referenced by 245722866d

This issue was referenced by 245722866d6977c8b440e0f468ebf6528d3970e1

Added subscriber: @Osares

Added subscriber: @Osares

This issue was referenced by 0835996cc9

This issue was referenced by 0835996cc92896b21e3b5b7c9b6f22c2ca4f1db5

Added subscriber: @paulgolter

Added subscriber: @paulgolter

Added subscriber: @Cigitia

Added subscriber: @Cigitia

Added subscriber: @hlorus

Added subscriber: @hlorus

Added subscriber: @hzuika

Added subscriber: @hzuika
Contributor

Added subscriber: @laurynas

Added subscriber: @laurynas
Bastien Montagne added this to the Core project 2023-02-09 15:42:54 +01:00
Bastien Montagne removed this from the Core project 2023-02-09 18:20:37 +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
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
14 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#95355
No description provided.