Connect a Driver to something in a linked model

Hello,
I’m working on an architectural model, and it has a lot of linked models in it. I have some Custom Properties under my World tab to control the various lights/groups of lights throughout the building. Obviously if I add a light directly to my scene, I can “drive” it with a custom property. But if I Link a model of, say, a bedside lamp (which has a light source in it), is there any way to access the light’s Power from my main scene?

On another note, I thought it’d be a good idea to add all those “master controls” to my World tab. In hindsight, wouldn’t it be better to have added those to the Scene tab instead? If I now decide to change my world completely those controls could disappear (or be hidden if I change to different World Settings). Is there some way of moving Custom Properties from one thing to another, without losing the connections?

Thanks in advance for any help or advice!
~ Paul

Interesting problem…

I was away from blender for a bit, upon returning, I’ve been appending stuff into my files. I forget what I had against linking in the v2.76 days, but upon returning, I just stuck with appending. Recently tried linking and I like it now and will continue to use it instead of appending.

So I just checked out my linking example I worked with, and sure enough, you can’t control a light’s power. What a silly limitation!

One idea that popped into my head is to use an armature in your liked objects. Each linked object that has a light has a single bone in it. Drive the light off of the bone, move the bone up and down like a light dimmer switch to control brightness of light.

IDK, it’s just an idea. You’d need a way to position all those bones so they are easy to access.

How complex is the scene?

Just sharing an idea, maybe it will spark other ideas,
Randy

What I do is make geometry node group of the asset + a lamp object input.

I add a cube to my archviz scene and drag/drop LINK the geometry node group asset onto the cube.

The cube transforms into the lamp or ceiling fan and references the light in the linked file. I can change that input to be a light object in the current file.

One of the big problems with light objects for me is they don’t get larger when you scale up their parent. You always have to change their radius separately.

1 Like

Thank you @revolt_randy and @thinsoldier - I shall try those out this week!

Hello @revolt_randy .
I’m now (after quite a while!) trying to set this up. As a test, I’ve made a very simple scene - one cube and one bone. I’ve set the cube’s y-position to be driven by the x-rotation of the bone. And it works perfectly.
image
But if I now link that scene into another scene (whenever I link things, I usually link to a Collection - is that right?) I cannot adjust the rotation of the bone - the whole thing is - as you’d expect - just one solid lump. I’m sure there must be a way to adjust the bones of something you’re linked to - else it’d be nigh on impossible to do any pose animation. I’ve tried also linking to the armature, but that just brings in the single bone with no connection to anything else. I’m sure I’m doing something wrong - I’m baffled by the array of Armature/Pose/Armature (again)/Bone/Bone Collections/Bones that appears when I create a single bone.

UPDATE: I found elsewhere on this forum the magical “make library override”. No idea what it really does, but it separated out the objects so I can now rotate that bone and its rotation controls the cube’s position! I checked that doing this didn’t break the link between the original model and the main scene (I opened the model, moved some of the cube’s vertices, saved it, then reopened the main scene) and found that the linked model did indeed show the updated model! Nice!

No idea if this is the “correct” workflow, but it looks a bit easier than @thinsoldier’s geo nodes method - I really need to delve into geo nodes; looks very interesting, but I’m really a beginner at this Blender malarky!

Try using more than one of the same asset.

1 Like

I see your point - adjust one bone, it adjusts all the lights! (I have added a bone to my wall light model and can use it to drive the light’s power). Luckily, several of the lights will be on the same circuit, so that actually works well in this case. I shall have to duplicate the lamp model file, so I have something like:
kitchen_wall_light.blend
and
hallway_wall_light.blend
…or something, so I can then link to different models and (I assume) then control them separately. And WTF is going on when I “make” library override - the model snaps to my 3D cursor and refuses to move (the x,y,z transforms are greyed out) unless I do ANOTHER “make library override”.

Moral of the story…I must learn the geonodes method!!!

There is another of the exact same name command somewhere in the menu that actually works for more than one. It is insane.

Geometry nodes can’t control light power.

1 Like

Riiiight…
I took a look at Blender Guru’s Geonodes for beginner’s tutorial on YouTube, and created this:


Basically a simple version of his sugar cube thing:

…but I added a point light, whose position is driven by the position of the main cube, and whose Power is driven by that Density value. As you can see in this example, I’ve Link-imported my model (“Sugary”) twice, and, after doing the Library Override > Make > Selected thing (a couple of times), I can adjust the Density of each individual cube, and therefore adjust the brightness of each individual light.

Is there a way, within a Geometry Node, to add a Custom Property, like I can with most other things? I just want a Property that I can link to the light power, and edit.


I found the “Store Named Attribute” thing that seems to do nothing bad to my scene, and I linked the “Value” to the main input thingy, so that should do the job. I shall give that a go on my proper lamp models and see how I get on!

UPDATE: Well, it kinda worked. I have full control of every single light’s power. But my new issue is this:
I want to be able to adjust the power a group of lights with one control. So logically, I created a Custom Property in my Scene tab, called it “Lights - Kitchen Wall”, did a “copy as new driver” and pasted the driver on to my light’s GeoNodes Brightness value. When I adjust the Scene’s “Lights - Kitchen Wall” value, the value in the GeoNodes does indeed update correctly - but nothing actually happens to the power of the light! Eg. if I set the Scene’s “Lights - Kitchen Wall” value to 10, the GeoNodes’ value changes to 10, but nothing actually happens. But if I then type in “10” in that same GeoNodes box, the light’s power changes to 10. Is this a bug or am I doing something wrong?