Does anyone know how to scale instances based on the distance from the camera? I just want to make them smaller the further away they are, so I can fake extreme distance.
I have varied solutions for similar problems but I can’t get this to work - it’s just a basic distribute points on faces, then instance from a collection of objects.
I tried this approach too, but I’m not sure how to get this to work with instance scaling - yet again I’m at a loss as to where exactly this goes in a node tree, if it even works. Image for convenience:
Try changing the multiply node to a regular math node since you’re inputting two floats anyway. Add a subtract node after it, putting a constant value of 1.0 in the first input, and the result of the multiply node in the second input.
Still having the same effect I’m afraid. (I suppose the flipping is them getting negative scale?)
What I find strange is that it’s almost like there is a “wave” of scaling - the ones in the middle dip in scale compared to the ones closest and furthest from the camera. I’ve checked all the meshes - everything is scaled to 1, rotation set, etc.
I think I’ll need to come back to this fresh tomorrow. It’s a shame there isn’t just a “camera data” node with distance like there is for shading!
I too wondered this, so I just tried swapping the camera for a cube and it seems to do the same thing.
I think tomorrow when I have more time I will try parenting an empty to the camera, then trying the “normal way” with proximity with the empty/cube.
EDIT actually, I just tried this using distance from an empty - see below. So strange you can get some instances upside down. Playing around with the node order (multiply/subtract) just seems to flip which values cause them to go upside down (1 or -1, etc.).
The camera object doesn’t contain any geometry. Try directly plugging the location value on the object info node into the vector math node. (Getting rid of the proximity node altogether)
Using -1 for scaling stuff will flip them in all three directions which ain’t what you want. You want to change the distance from going from 0 to 1 to instead be 1 to 0 (or instead of 0 just whatever you want your min scale to be). To do that you just want a Map Range node after that Distance node and change the To Min and To Max to 1 and 0 instead of 0 and 1. Then just change your From Max value to control the scaling distance from your camera.