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?)