04-13-2024, 07:12 PM
Documentation of adding a greenscreen to a room.
1. First you will need the greenscreen.bs file provided by Marburg.(Downloadable in the PG Tools section.)
2. Also you will need the Blender software to edit and export the mesh file.
3. To compile the mesh file you will need the ctk-tools.(Downloadable in the PG Tools section.)
4. In order to load a .bs file into Blender you also need to download the io_tkm17_body-1.5.1
Importer (Downloadable in the PG Tools section.)
In most cases you may want to insert a TV-Screen into an existing room.Thats why we will use the
"AppImport"-function of the game.This method will be the right way to add a TV-Screen into an
existing room.I use the Livingroom as an example for how to add TV-Screen support to an existing room.
This Documentation is written for users who are already familiar with the tools i named above.
After the setup of your work environment, load the Livingroom.bs file into the Blender and look for
the TV-Screen inside of the room.Load a plane object from the Blender Ojects list and scale it to
the dimensions of the existing TV-Screen mesh.Move the new plane to the exact position of the
existing TV-Screen,this may be a little tricky.If you have the right position for your new plane
delete the room mesh.Now you are left with only the new created plane in your blender workspace.
Rename the new plane object mesh to something like TVScreen and export it as scene.dae file.
Prepare your ctk-batch to create a room named R9ZRoom588 and compile the TVScreen mesh.
If you are working on a new room the above steps are not needed you can simply add a TV-mesh
and add that meshname to the config scripts.(Dont use Oystermugs CTK-gui,use the original ctk-
batch files for this task.)
If the ctk has finished compiling the room go into the Scenes directory of the new compiled room
and rename the R9ZRoom588.bs file into R9ZRoom588_TVScreen.bs and copy it into the original scenes
folder of the Livingroom.Now we have to edit the script files to make the TVScreen work inside of
our room.Edit the Room/Scripts/Luder/Common/R9ZRoom588.bs file to this....
//BS ???
// R9ZRoom588.bs
// converted from: R9ZRoom588.[bsb] (BSB v6, encrypted)
// created by: BSB Tool (v2.0.1)
RoomDescription :Room588. {
.RoomID 588i;
.Description "R9ZRoom588";
.DescriptionText "This is the Livingroom with TVScreen support...";
.IconID 46588i;
.CameraClampY ( -600f, 600f );
.FarClipping 600f;
.Characteristics RoomCharacteristics. {
.PoseSingle 1i;
.PoseDual 1i;
.PoseSpecial 1i;
.PosePhotoStatic 1i;
.PosePhotoDynamic 1i;
.PoseForeplay 1i;
};
.VideowallConfig RoomVideowall. { <<<<<<<<<<<<<<<<<<
.WallGeometry "Room:TVScreen_mesh"; <<<<<<<<<<<<<<<<<<
.WallDefaultShader "Room:Material_001_material"; <<<<<<<<<<<<<<<<<< NEW ENTRY BLOCK
.WallUserShader "Room:GreenScreen_Shader"; <<<<<<<<<<<<<<<<<<
.WallOrientation 1i; <<<<<<<<<<<<<<<<<<
};
};
Edit your Room/Scripts/Luder/Room588/AcRoom.bs file to this...
//BS ???
// AcRoom.bs
// converted from: AcRoom.[bsb] (BSB v6, encrypted)
// created by: BSB Tool (v2.0.1)
AppModel :Room_Area. {
.ComponentArray [ AppImportScene. {
.NodeName "Room" + :room;
.ParentPath "/RoomRoot";
.SceneFile "Luder/Room/R9ZRoom588/R9ZRoom588";
};
AppImportScene . { <<<<<<<<<<<<<<<<<<
.NodeName "Room" + :room; <<<<<<<<<<<<<<<<<< NEW ENTRY BLOCK
.ParentPath "/RoomRoot"; <<<<<<<<<<<<<<<<<<
.SceneFile "Luder/Room/R9ZRoom588/R9ZRoom588_TVScreen"; <<<<<<<<<<<<<<<<<<
};
AppImportScene . { <<<<<<<<<<<<<<<<<<
.NodeName "Room" + :room; <<<<<<<<<<<<<<<<<< NEW ENTRY BLOCK
.ParentPath "/RoomRoot"; <<<<<<<<<<<<<<<<<<
.SceneFile "Luder/Room/R9ZRoom588/greenscreen"; <<<<<<<<<<<<<<<<<<
};
AppImportScene. {
.NodeName "Lights" + :room;
.ParentPath "/RoomRoot";
.SceneFile "Shared/Room/lights01";
};
AppImportScene. {
.NodeName "LightsHS" + :room;
.ParentPath "/RoomRoot";
.SceneFile "Shared/Room/lights01mod";
};
AppReplaceSkeleton. {
.SourcePath "/Lights" + :room + "/lights_group";
.SourceRootPath "/Lights" + :room;
.TargetPath "/LightsHS" + :room + "/lights_group";
.TargetRootPath "/LightsHS" + :room;
};
AppPoseBlend. {
.PoseBlend "SFHlight_poseBlend";
};
AppPoseBlend. {
.PoseBlend "FLLlight_poseBlend";
};
AppPoseBlend. {
.PoseBlend "BLlight_poseBlend";
};
AppPoseBlend. {
.PoseBlend "AMBlight_poseBlend";
};
AppPoseBlend. {
.PoseBlend "SFHrot_poseBlend";
};
AppPoseBlend. {
.PoseBlend "FLLrot_poseBlend";
};
AppPoseBlend. {
.PoseBlend "BLrot_poseBlend";
};
AppImportNamespace. {
.NodePath "/Room" + :room + "/room_position_group";
.ImportNamespace "room_position_group";
};
];
};
After this changes you can copy the greenscreen.bs file into the Livingromms Scene folder.
Look inside of the greenscreen.bs file and make SURE that the TNode.Parent is set to the scene
root node,usually called something like local_1, local_Scene or local_NODE000.Thats all.
This will work for all rooms the same way.Be aware of that the Livingroom i released HAS
a TVScreen support already i just use the room as a reference.
Happy Hacking! :)
1. First you will need the greenscreen.bs file provided by Marburg.(Downloadable in the PG Tools section.)
2. Also you will need the Blender software to edit and export the mesh file.
3. To compile the mesh file you will need the ctk-tools.(Downloadable in the PG Tools section.)
4. In order to load a .bs file into Blender you also need to download the io_tkm17_body-1.5.1
Importer (Downloadable in the PG Tools section.)
In most cases you may want to insert a TV-Screen into an existing room.Thats why we will use the
"AppImport"-function of the game.This method will be the right way to add a TV-Screen into an
existing room.I use the Livingroom as an example for how to add TV-Screen support to an existing room.
This Documentation is written for users who are already familiar with the tools i named above.
After the setup of your work environment, load the Livingroom.bs file into the Blender and look for
the TV-Screen inside of the room.Load a plane object from the Blender Ojects list and scale it to
the dimensions of the existing TV-Screen mesh.Move the new plane to the exact position of the
existing TV-Screen,this may be a little tricky.If you have the right position for your new plane
delete the room mesh.Now you are left with only the new created plane in your blender workspace.
Rename the new plane object mesh to something like TVScreen and export it as scene.dae file.
Prepare your ctk-batch to create a room named R9ZRoom588 and compile the TVScreen mesh.
If you are working on a new room the above steps are not needed you can simply add a TV-mesh
and add that meshname to the config scripts.(Dont use Oystermugs CTK-gui,use the original ctk-
batch files for this task.)
If the ctk has finished compiling the room go into the Scenes directory of the new compiled room
and rename the R9ZRoom588.bs file into R9ZRoom588_TVScreen.bs and copy it into the original scenes
folder of the Livingroom.Now we have to edit the script files to make the TVScreen work inside of
our room.Edit the Room/Scripts/Luder/Common/R9ZRoom588.bs file to this....
//BS ???
// R9ZRoom588.bs
// converted from: R9ZRoom588.[bsb] (BSB v6, encrypted)
// created by: BSB Tool (v2.0.1)
RoomDescription :Room588. {
.RoomID 588i;
.Description "R9ZRoom588";
.DescriptionText "This is the Livingroom with TVScreen support...";
.IconID 46588i;
.CameraClampY ( -600f, 600f );
.FarClipping 600f;
.Characteristics RoomCharacteristics. {
.PoseSingle 1i;
.PoseDual 1i;
.PoseSpecial 1i;
.PosePhotoStatic 1i;
.PosePhotoDynamic 1i;
.PoseForeplay 1i;
};
.VideowallConfig RoomVideowall. { <<<<<<<<<<<<<<<<<<
.WallGeometry "Room:TVScreen_mesh"; <<<<<<<<<<<<<<<<<<
.WallDefaultShader "Room:Material_001_material"; <<<<<<<<<<<<<<<<<< NEW ENTRY BLOCK
.WallUserShader "Room:GreenScreen_Shader"; <<<<<<<<<<<<<<<<<<
.WallOrientation 1i; <<<<<<<<<<<<<<<<<<
};
};
Edit your Room/Scripts/Luder/Room588/AcRoom.bs file to this...
//BS ???
// AcRoom.bs
// converted from: AcRoom.[bsb] (BSB v6, encrypted)
// created by: BSB Tool (v2.0.1)
AppModel :Room_Area. {
.ComponentArray [ AppImportScene. {
.NodeName "Room" + :room;
.ParentPath "/RoomRoot";
.SceneFile "Luder/Room/R9ZRoom588/R9ZRoom588";
};
AppImportScene . { <<<<<<<<<<<<<<<<<<
.NodeName "Room" + :room; <<<<<<<<<<<<<<<<<< NEW ENTRY BLOCK
.ParentPath "/RoomRoot"; <<<<<<<<<<<<<<<<<<
.SceneFile "Luder/Room/R9ZRoom588/R9ZRoom588_TVScreen"; <<<<<<<<<<<<<<<<<<
};
AppImportScene . { <<<<<<<<<<<<<<<<<<
.NodeName "Room" + :room; <<<<<<<<<<<<<<<<<< NEW ENTRY BLOCK
.ParentPath "/RoomRoot"; <<<<<<<<<<<<<<<<<<
.SceneFile "Luder/Room/R9ZRoom588/greenscreen"; <<<<<<<<<<<<<<<<<<
};
AppImportScene. {
.NodeName "Lights" + :room;
.ParentPath "/RoomRoot";
.SceneFile "Shared/Room/lights01";
};
AppImportScene. {
.NodeName "LightsHS" + :room;
.ParentPath "/RoomRoot";
.SceneFile "Shared/Room/lights01mod";
};
AppReplaceSkeleton. {
.SourcePath "/Lights" + :room + "/lights_group";
.SourceRootPath "/Lights" + :room;
.TargetPath "/LightsHS" + :room + "/lights_group";
.TargetRootPath "/LightsHS" + :room;
};
AppPoseBlend. {
.PoseBlend "SFHlight_poseBlend";
};
AppPoseBlend. {
.PoseBlend "FLLlight_poseBlend";
};
AppPoseBlend. {
.PoseBlend "BLlight_poseBlend";
};
AppPoseBlend. {
.PoseBlend "AMBlight_poseBlend";
};
AppPoseBlend. {
.PoseBlend "SFHrot_poseBlend";
};
AppPoseBlend. {
.PoseBlend "FLLrot_poseBlend";
};
AppPoseBlend. {
.PoseBlend "BLrot_poseBlend";
};
AppImportNamespace. {
.NodePath "/Room" + :room + "/room_position_group";
.ImportNamespace "room_position_group";
};
];
};
After this changes you can copy the greenscreen.bs file into the Livingromms Scene folder.
Look inside of the greenscreen.bs file and make SURE that the TNode.Parent is set to the scene
root node,usually called something like local_1, local_Scene or local_NODE000.Thats all.
This will work for all rooms the same way.Be aware of that the Livingroom i released HAS
a TVScreen support already i just use the room as a reference.
Happy Hacking! :)
The Whole World Is A Piece Of Shit But You Have To Handle It.