First Couple of Days - Feedback/Bugs

Hi everyone!
I’ve now spent 3 days with the Alpha3, but not being able to fully dedicate my time to it.
I thought I’d rather give feedback quickly than waiting and trying to filter etc. I hope that is fine.

First off: Im on a vacation and working on a machine that is absolutely a potato. Lenovo thinkpad X390 Yoga. No NVidia graphics card. All machine details below. I’m happy to report that still, everything seems to work pretty much fine!

Here are my first impressions and thoughts(besides loving POPs of course!):

Feedback/Comments/Bugs

  • Sphere POP: has holes in default configuration.
  • POP viewer component doesnt update properly. Drop single point POP on it, the torus mesh stays.
  • ReRange is the only POP with a name in camelcase.
  • trail POP: crash upon switching age attrib to seconds whie on pause. => TouchDesignerCrash.2023.31525_3.dmp
  • Make a Craete POP, attach a POP-to DAT. In create, switch on ‘add points’. New attribute name, say ‘test’. Adjust its default value: it will not update in the POPto DAT(bug!). If you change the name afterwards, it does update.
  • I tried to transfer a custom attribute to the alpha channel of the color attribute. Using math POP i was successful(using output attribute scope: Color(3)). I would have expected this to be achievable with the attribute POP but couldn’t find a way.
  • Subdivide POP: Use a box (all default) → subdivide POP. Result has a certain asymmetry.
  • Null POP has a bypass option. Why?
  • first look at GLSL copy POP. It seems we can access an attribute named ‘foo’ from the template input via ‘templatefoo’. Any chance of getting a nicer syntax? ‘template.foo’, ‘template_foo’ or similar?
  • make a built-in DAT-to into the viewer of the POPs maybe. I almost wanted to suggest switching the order of MATs and DATs in the OP-create dialog because i find myself constantly switching to DATs just to create a POP-to DAT while working with POPs.
  • Im currently trying to cook up a boids like system. Using the neighbor POP as a starting point. Then falling back to GLSL. It would be super cool to have an option in the analyze POP to make its analysis per neighbor group.
  • if i try to use a random POP to initialize a velocity attribute (using the ‘set’ method) i seem to only get positive values. I found myself switching to ‘direction’ mode and cranking up the cone angle to 360 degrees. I find a 0-1 range for randomness a bit inconsistent.

Bugs in Examples:

  • GLSL copy POP: GLSL Copy POP TemplateBends => Error on open. Input attribute scope in op ‘normalizeAddHeight’ needs to be set to ‘P(1) P(2)’. Then it has no errors but i somehow feel it should look different.

Questions

  • Can I access the point index and use it as an attribute/convert it to one? I found myself ‘needing’ this before I saw that trail POP can create an age attribute and assuming i can get the age from the order (which only makes very limited sense, I know). Still I thought the question might be interesting.

Alpha/POP semi-related

  • Would be great to have some sort of ‘ignore outliers’ option for homing the viewer. So many situations in which a couple of points, far far away mess up the experience with the SOP/POP viewers.

TouchDesignerCrash.2023.31525_3.dmp (795.4 KB)

System Info:

Item Info
OS Name Microsoft Windows 11 Pro
Version 10.0.22631 Build 22631
Processor Intel(R) Core™ i5-8365U CPU @ 1.60GHz, 1896 Mhz, 4 Core(s), 8 Logical Processor(s)
Name Intel(R) UHD Graphics 620
PNP Device ID PCI\VEN_8086&DEV_3EA0&SUBSYS_229417AA&REV_02\3&11583659&0&10
Adapter Type Intel(R) UHD Graphics Family, Intel Corporation compatible
Adapter Description Intel(R) UHD Graphics 620
Adapter RAM 1.00 GB (1,073,741,824 bytes)
Installed Drivers C:\WINDOWS\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_0804967595b473cc\igdumdim64.dll,C:\WINDOWS\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_0804967595b473cc\igd10iumd64.dll,C:\WINDOWS\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_0804967595b473cc\igd10iumd64.dll,C:\WINDOWS\System32\DriverStore\FileRepository\iigd_dch.inf_amd64_0804967595b473cc\igd12umd64.dll
Driver Version 27.20.100.8729

Hello @hrtlacek,
Thank you for taking the time to report this.

Could you share a screenshot? We could not replicate so far.

We were able to replicate, this will be fixed.

With the dump we identified a crash in the Attribute POP. We will look into this.

If you change the default value, the next added point will have the new default value. Not sure if we should change all the values for the already created points.

The attribute POP is not made to mix attribute components. You can mix component with other operators like Math, Math Mix or ReRange.

This is a result of the current algorithm used which only operates on triangles. We need to add more adapted algorithms.

For consistency. It’s not really useful, but all Null operators have a bypass flag anyway.

For consistency, we might keep using PascalCase variable names.

Have you tried the POP Viewer new functionalities? We can now inspect point attributes within the viewer.

We are considering adding something similar to the Analyze POP or create a new POP for this.

Were you using Uniform (Continuous) at first? You can adjust the range with Value A and Value B parameters.

The sample didn’t look like this before. We will look into this.

You can add the point index as an attribute with the Pattern POP.
PointIndexPattern.toe (3.8 KB)

This is a great idea, bumping this.

Minor Feature request: Consider building in a toggle for a simple index into any Generator POP (Sphere/line/etc), it’s one of the biggest repetitive op creations patterns I’ve hit so far. Then, if you need more than than an ordinary index or want to reorder it etc, that’s when the user could switch to replacing the simple index with something else, via a downstream Pattern POP.

Thank you for your quick reply!

Could you share a screenshot? We could not replicate so far.

All default settings, no changes to parameters at all. Just slightly rotated the viewer and switched the bottom one to wireframe. I feel like I have seen similar things in the past on PCs that are a bit worse/older. (Sphere SOP has no such problem on that machine)

If you change the default value, the next added point will have the new default value. Not sure if we should change all the values for the already created points.

Hm, I’m not 100% sure I can follow what you say, I feel like this is clearly a bug, but it seems I’m missing something.

The attribute POP is not made to mix attribute components. You can mix component with other operators like Math, Math Mix or ReRange.

I see. I would have thought swizzling and re-assigning attributes from one to another is conceptually a ‘not math’ operation. Just saying I would find it more intuitive to find this in the attribute POP.

This is a result of the current algorithm used which only operates on triangles. We need to add more adapted algorithms.

I thought so. Just wanted to give a heads up.

For consistency. It’s not really useful, but all Null operators have a bypass flag anyway.

Just making sure we talk about the same thing: Not talking about the flag but the parameter.

Have you tried the POP Viewer new functionalities? We can now inspect point attributes within the viewer.

I guess I have overlooked that until now, and it sounds very good! You mean we can see the list of numbers not only a vizualisation? Generally I hope in the long run we get a POP inspector like feature for the Panes (such as TOP/Geometry Viewer). Anyway, on my very weak laptop, I find myself avoiding the POP Viewer and going for POP to DATs, since it feels less performance hungry. Even little networks don’t run at 60Hz on this machine. I am not sure if it is interesting for you what the experience is like on such a weak machine, but I’m stuck with it for a week and can report more :slight_smile:

We are considering adding something similar to the Analyze POP or create a new POP for this.

Sounds absolutely great! I have thought about it a little and wondered if there generally should be more ‘grouping’ like functionality. Currently we have groups but it would be interesting to have some sort of ‘per group’ functionality/‘group attributes’/‘group parameters’. Not sure if I express this understandably.

Were you using Uniform (Continuous) at first? You can adjust the range with Value A and Value B parameters.

Yes. I tried to put Value A to -1 and B to 1. In a quick test I cannot reproduce this, I am not sure what went wrong back then, will try to investigate.

You can add the point index as an attribute with the Pattern POP.

Makes sense, Thank you!! I am teaching quite a bit and from a beginner perspective, I feel like the Index attribute should be accessible everywhere, since it is ‘already there’. I would guess that the index is technically not really an attribute and that’s why it is like this. Still, just trying to point out things that might make this more intuitive.

Hey Patrik, thank you for the detailed feedback, any chance you have a crash autosave toe on that one or a toe that can reproduce it, seems it got into a state it shouldn’t have, having trouble to reproduce

Thank you for the screenshot @hrtlacek. We have an opened bug for geodesic spheres. We’ll check if it’s something related.

I see now. Yes indeed, the parameter is not absolutely necessary since we also have the flag on all operators. We are considering removing it.

Not exactly. For now we can mouse over points and check the attribute values.

@pointshader and @hrtlacek I’ve added a RFE task to optionally add a point index attribute to the generators.

I’m sorry, I should have noted down what file exactly that was etc. I’m attaching a zip file with everything I did so far (incl backup folder and some more crash dumps and auto-saves). Hope the data in there helps you guys figure out where the dump came from.
Btw, the boids4.toe starts to look reasonable although I wonder if we could achieve something like tis with less GLSL (in a comfortable way).
And: I got a crash on file open when I try to open boids2.toe.
all 31525 version (I saw greg posted an updated alpha version 3 that I haven’t downloaded yet).
POPs.zip (2.8 MB)

No worries at all, these will be helpful as well, thank you, we’ll go through these. I’ll take a look at the GLSL part as well.

So a lot of the crashes (including the Trail POP one) come from using the POP Viewer on a POP that has only points and no primitives, such as what Create POP does by default when adding points (and also the trail POP when reset in some cases). This has now been fixed, we’ll aim to get a new build out soon

Thanks for the info!

Cool example, thanks for sharing, as Guillaume pointed out we’re planning on adding ways to loop over neighbors, so that would simplify some of that, otherwise you could probably replace some with math/mathMix POP, wouldn’t necessarily be easier though, more of a preference, then we might add more dedicated POPs for particles/forces, to simplify building interesting particles systems, to go along the particles POP!

I thought so too but it seemed more complicated than a few lines of GLSL. Probably gotta get used to it all and wait for all the wonderful things that seem to be coming there!

re" simple index into any Generator POP" - this will not be adequate as if you then delete a point, the index attribute will not be the index of the point in the subsequent POPs. We will implement a current-real-point index built-in and normalized version of it… just deciding a syntax for built-ins like this and pi 3.1457.

Oh, I actually was talking about a toggle for the “inadequate” behavior you’re describing, where the index of the original circle POP would persist after the delete - to me it makes sense that if you want to access a point by index of the currently active POP this would be a separate function/attribute that would the “current-real-point” index you then describe. I was originally just commenting that 99% of the time I add a Generator POP I immediately add a pattern POP and modify the settings every time for the “index at creation” / “inadequate” attribute, which is actually useful in many cases. So ideally both are implemented, with the pattern POP after Generator POP used if an alternate index assignment is needed.