This is already available. When you use the “Add…” menu item to add new frames (either by right-clicking on the “Frames” area, or by using main menu “Frame → Add”) then you can choose multiple files in the resulting “open” box (from Windows or GTK). Select the files using Shift or Ctrl as you wish.
I do not know the “Sprite Illuminator”. But if you want to add normalmaps to sprite sheets, and then illuminate them, this is certainly possible. You will need to process the scene nodes (MyScene.RootNode
) a bit, to
-
find the
TUnlitMaterialNode
there -
replace it with
TPhysicalMaterialNode
-
and set there
BaseTexture
,NormalTexture
to have lighting working on the sprite sheet.
Doing this would look something like this:
....
begin
...
// put this somewhere at loading, e.g. in TStateXxx.Start:
MyScene.RootNode.EnumerateReplaceChildren(@ReplaceNodes);
end;
procedure TStateXxx.ReplaceNodes(ParentNode: TX3DNode; var Node: TX3DNode);
var
NewNode: TPhysicalMaterialNode;
begin
if Node is TUnlitMaterialNode then
begin
NewNode := TPhysicalMaterialNode.Create;
NewNode.BaseTexture := Node.EmissiveTexture;
NewNode.NormalTexture := TImageTextureNode.Create;
TImageTextureNode(NewNode.NormalTexture).SetUrl(['castle-data:/my-normal-map.png']);
Node := NewNode;
end;
end;
The above is a pseudo-code, I didn’t test it, but hopefully it should get you started.
The removal of empty space is important as I can really see a bounding box around the image running it in the editor, so I guess the Scene shrinks and expands directly around the image which makes collision more accurate?
The bounding box of the scene just follows the geometry (underlying quad) created. I agree that removal of this is important to have smaller atlases. Note that for collisions, the workaround it to manually use smaller rectangle – e.g. instead of SomeScene.BoundingBox.RectangleXY
you can use SomeScene.BoundingBox.RectangleXY.Grow(-10, -20)
.