3dcheapskate opened this issue on Mar 31, 2020 ยท 21 posts
an0malaus posted Tue, 07 April 2020 at 10:54 PM
On the alternate geometry subject, my understanding is that it is implemented via a uniqueInterp(olated) channel on the actor (essentially locked to integer values, rather than a float)
Here's one use I found from my efforts way back in the dawn of time, when folks first crawled from the primordial slime...
actor rThumb2:38
{
name rThumb2
on
bend 1
animatableOrigin 0
dynamicsLock 0
hidden 0
addToMenu 1
castsShadow 1
includeInDepthCue 1
useZBuffer 1
parent rThumb1:38
conformingTarget rThumb2:1
alternateGeom rThumb2_1
{
name Hidden rThumb2
objFile 20 :Runtime:Geometries:Null.obj
}
creaseAngle 80
subdivLevels 0
subdivRenderLevels 0
subdivideWithFigure 1
channels
{
geomChan PBMHideFingers
{
uniqueInterp
name PBMHideFingers
initValue 0
hidden 1
enabled 1
forceLimits 1
min 0
max 1
trackingScale 1
keys
{
static 0
k 0 0
sl 1
con
sm
}
interpStyleLocked 0
valueOpDeltaAdd
Figure 38
rHand:38
PBMHideFingers
deltaAddDelta 1.000000
}
This use was prior to the implementation of animated visibility for actors, so the only way to completely hide something (other than scale it to atomic proportions) was to swap out its geometry for a null. The geomChan can then be slaved via value operations (ERC). If such was done with "instanced" props, they can all follow the master's geometry changes. If they are all loaded (not imported) from the same obj file as mentioned, that should minimise memory usage. It's been a while since I tested this, as geometry swapping did not play nicely with unimesh figures at some point. (or maybe it was just one figure with dodgy geometry that couldn't be subdivided. I'll have to check my logs)
Verbosity: Profusely promulgating Graham's number epics of complete and utter verbiage by the metric monkey barrel.