Each object that has a new displacement map will require a new material, as you’ve discovered, and to change the phong in each material, to be the same, you’ll need to make changes through scripting. Find the phong nodes, by name or by material, and make changes with the script. Hope that helps. I’d recommend making phong preset, and simply load a preset to all phongs that need it to your scene with the script. If I recall my scripting correctly, you’re looking for the material source.
For example, this little thing would find the first node in the light material:
//add a point light
var oLight = oRoot.AddLight("Point", false, "auto_atten_light");
var oLightShader = oLight.Shaders(0);
fLightDefaults(oLightShader);
function fLightDefaults(oShader)
{
oShader.shadow = true;
oShader.factor = 0.0;
oShader.intensity = 1.0;
oShader.atten = true;
}
I would also Google search for “Bernard Lebel and XSI materials”. He’s particularly good at this stuff.