Customizing ICE compound property pages (PPGs)

Q: Can I use groups and tabs to organize the exposed ports on my compound PPG? Can I add PPG logic (callbacks)?

A: Yes, you can add groups, but not tabs or PPG logic.

Most of what you can customize on a ICE compound PPG is available in the UI through the exposed port properties.

Unlike shader compounds, you’ll notice there’s no way to specify groups, tabs, or PPG logic.

To define groups, you’ll have to edit the .xsicompound file and manually add your groups in the layout element.

For example, here’s the layout for the Deform by Curve compound. This xml shows the full available syntax for the layout section. No other elements (like ) are supported: I checked the code that loads ICE .xsicompound files.

	<item type="input" name="Mute"> </item>
	<item type="input" name="Curve_Name"> </item>
	<item type="input" name="Reference"> </item>
	<item type="input" name="Axis" min="0" max="0">
		<enum value="0"><![CDATA[X Axis]]></enum>
		<enum value="1"><![CDATA[Y Axis]]></enum>
		<enum value="2"><![CDATA[Z Axis]]></enum>
	<group type="input" name="Scaling Along">
		<item type="input" name="Scale_Curve" min="-10" max="20"> </item>
		<item type="input" name="Scale_Normal" min="-10" max="20"> </item>
		<item type="input" name="Scale_BiNormal" min="-10" max="20"> </item>
	<group type="input" name="Roll">
		<item type="input" name="Roll" min="-360" max="360"> </item>
	<group type="input" name="Translate">
		<item type="input" name="Along_Curve" min="-20" max="20"> </item>
		<item type="input" name="Along_Normal" min="-2" max="2"> </item>
		<item type="input" name="Along_Binormal" min="-2" max="2"> </item>
	<group type="input" name="Constraint">
		<item type="input" name="Constrain_To_Deformer"> </item>
		<item type="input" name="Constrain_To_Deformee"> </item>
	<group type="input" name="Profiles">
		<item type="input" name="Use_Scale_Profile"> </item>
		<item type="input" name="Scale_Profile"> </item>
		<item type="input" name="Use_Roll_Profile"> </item>
		<item type="input" name="Roll_Profile"> </item>
	<item type="output" name="result"> </item>