git.lucas.co / hou-control
git clone https://git.lucas.co/hou-control.git

notes/hou-developer.md (7.8K)

  1 # Developer Houdini Plugin 
  2 ### Version 0.1 
  3 ### Author: Lucas Galante
  4 ### Document Updated: December 2025
  5 
  6 # Outline
  7 
  8 Developer operators are combined in SOP solver and DOP contexts in Houdini. Creating lifelike elements in digital containers.
  9 
 10 
 11 # Looking Ahead 
 12 
 13 ## Attributes Or Groups?
 14     
 15 This question easily leads into the larger topic of how data is stored for dynamical operations. There are two main types of data in Shapeshifter:
 16 ### 1. Live data
 17 Fluid data which runs like a stream through the simulation.
 18 
 19 ### 2. Derivative data
 20 Data calculated anew every frame. It is calculated based on live data.
 21 
 22 ## Regions
 23     
 24 After making the GEM mold operators, I am more experienced with treating a model as a composite of distinct parts and overlapping attributes. It has also helped me visualize what a developed form with distinct surface regions can look like and how the regions might evolve during the model's life. The idea of regions in a model reminds me of organs which fit together physically and programmatically.
 25 
 26 It is interesting to consider how regions in a model are like programmatic elements in architecture and ecology. These are both structures where multiple functions are built into a one body. Disease may spread through a limb and leave a trail of evidence or destroy its host. Living models host mechanisms which influence their status. Viruses can travel within their host in directions informed by sense input and change the host's nature depending on where they travel. Morphogen gradients are interesting because they demonstrate how distribution of matter on one scale can influence form on another scale.
 27 
 28 Another property of a living model is how definitively its boundaries are defined. Before they are really there, the boundary of a living model is predictable. It requires an environment which supplies the real elements of itself, but information about where those elements will go is present ahead of time.
 29 
 30 ## Operator Categorirs
 31 
 32 ### Pre-Simulation
 33 The embryo or seed is created, initial selections and value assignments are made, attributes that will be used are introduced and initial conditions are set. Pre-simulation operators define the characteristics and landscape of a simulation before it runs. Attribute templates and starting geometry are supplied to be fed into the simulation network.
 34 
 35 ### Simulation Attribute Operators
 36 Value operators operate on simulation attributes which are present for the entire simulation.Simulation attributes are persistent from the end of one frame to the beginning of another.
 37 
 38 ### Development Attribute Operators
 39 During this stage of the simulation network, simulation attributes are composited into development attributes. Development attributes are cleared at the end of each frame and need to be constructed from the same corresponding simulation attributes for every frame. Development attributes tell the surface development operators how the surface will change.
 40 
 41 ### Surface Development Operators
 42 Surface Development Operators read development attributes and use that information to transform the mesh or volume. Aside from position and normal, attributes are untouched. At this point, Value assignments remain the same until the next frame.
 43 
 44 ### Meshing Operators
 45 Once the geometry has been deformed, meshing operators are the final step in the simulation process.Meshing operators adjust the topology of geometry. This ensures that the number of data points in a mesh is always proportional to ts surface area. The surface is remeshed to keep make primitives and points conform to some regular formation.
 46 
 47 ### Attributes
 48 Most attributes are assigned to the geometry instance in the preparation phase.
 49 Attributes belong to categories based on their function.
 50 
 51 ### Age
 52 Values have ages which are affected by a few different criteria.
 53     
 54     Increment
 55       - 1
 56       - The value of the attribute\
 57       - Some factor of a scale / normalized value
 58 
 59       Reset 
 60 		- 
 61 
 62 
 63 ## Larger Ideas
 64 
 65 ### Development
 66 To effectively develop this package, categories need to be created which
 67 
 68 ### Topological Considerations
 69 At this point in time, the Shapeshifter operator package is primarily concerned with the surface of digital models. Unlike many other approaches to similar design queries its operators involve direct analysis and development of closed forms, not an underlying network or structure to which is later assigned volume. 
 70     
 71 ### Operator Categorization
 72 Nodes are distributed into categories based on their function. Nodes which operate on or output scalar or vector attributes are separated. The reason for this is simplifying the development of nodes. Nodes with more complex options are more difficult to modify, and because a holistic vision for the inerface hasn't materialized, it's easier to keep them separated, at least for now.
 73 
 74 ### Geometry Classes
 75 
 76 #### Vertices
 77 As of yet there aren't any well-defined use cases for vertex attributes.    
 78 
 79 #### Points
 80 The majority of nodes operate on point attributes. The keystone of shapeshifter is the develop and remesh node pair. The develop node requires point attributes to modify the topology of surfaces over time, so it makes sense to focuse primarily on point attributes.
 81 
 82 #### Primitives
 83 If a clear use-case for primitive attributes becomes clear.  
 84 
 85 #### Detail
 86 Global attributes are useful for storing statistics and analyses.
 87 
 88 ## Operator Categories
 89 
 90 ### Scalar
 91 Scalar nodes which edit the values of scalar attributes.
 92 
 93 ### Vector
 94 Vector sodes which edit the values of vector attributes.
 95 
 96 ### Surface
 97 Surface nodes utilize input attributes to alter the topology of the geometry.
 98 
 99 ### Volume
100 Volume nodes modify volumes that exist in tandem with mesh geometry. Volume nodes are not fleshed out and need very basic development.
101 
102 Looking ahead idea #1: Volumes can be reservoirs of value when a vector directs value to flow either inside of (Shapeshifter Core.) the geometry or away from the surface of the geometry (Shapeshifter Miasma.)
103 
104 
105 # Operators
106 
107 ## Scalar Analysis
108 Analyze poperties of scalar attributes.
109 
110 Analysis attributes provide specific information about scalar attributes.
111 
112 Analyses can be toggled on and off in the operator's parameter interface.
113 
114 Some analyses are per-point, and others are operations involving sets of points.
115 
116 ## Scalar Composite
117 Combine attributes in different configurations.
118 
119 Will likely be combined with "Scalar Combine".
120 
121 ## Scalar Combine
122 Combines attributes using different methods.
123 
124 ### Looking Ahead
125 A standard Attribute Combine operator is shipped with Houdini. It has several interesting options, so it is not clear if the Shapeshifter version should be kept in the package.
126 
127 ## Scalar Concentrate
128 Similar in function to "Scalar Diffuse", only in reverse.    
129 
130 ###  Looking Ahead
131 It's possible that this operator can be replaced by setting "Scalar Diffuse" to a negative number.
132 
133 ## Scalar Diffuse
134 Diffuses attribute values over a surface.
135 
136 ## Scalar Initialize
137 Pre-sim: Initializes attributes that will be used during simulation.
138 
139 ## Scalar Map
140 
141 ## Scalar Migrate 
142 
143 ##  Scalar Normalize 
144     
145 ## Scalar Ramp 
146 
147 ## Scalar Weight
148 
149 ## Submute Begin 
150 
151 ## Submute End 
152 
153 ## Lead 
154 
155 ## Vector Analysis
156 
157 ## Vector Composite 
158 
159 ## Vector Conform 
160 
161 ## Vector Diffuse 
162 
163 ## Vector Direct 
164 
165 ## Vector From Scalar 
166 
167 ## Vector Migrate 
168 
169 ## Vector Normalize 
170 
171 ## Vector Rotate 
172 
173 ## Vector Unify 
174 
175 ## Vector Weight 
176 
177 ## Surface Adapt
178 
179 ## Surface Open 
180 
181 ## Surface Suture 
182 
183 ## Subdivide 
184 
185 ## Remesh 
186 
187 ## Detangle 
188       
189 ## Develop 
190 
191 ## Time 
192 
193 ## Time Ramp 
194 
195 ## Time Switch
196 
197 ## Solver 
198 
199 ## Region (Tentative) 
200 
201 ## Analyze (Tentative) 
202 
203 ## Vitality 
204 
205 ## Edge Analysis 
206 
207 ## Analyze Change 
208 
209 ## Volume/Miasma
210 
211 ## Volume/Core
212 
213 ## Filter/Select
214 
215 ## Region/Region Center 
216 
217 ## Attribute/Promote 
218 
219 ## Visualize/Panel
220 
221 ## ID
222 
223 ## Age/Expire
224 
225 ## Energize 
226 
227 ## Create/Embryo
228 
229 ## Filter/Cull
230 
231 ## Combine
232 
233 ## Constant
234 
235 ## Measure 
236       
237 ## Metamax (Irrelevant?)