49 lines
1.7 KiB
Markdown
Executable File
49 lines
1.7 KiB
Markdown
Executable File
# Demo Render Bridge: minimalny prawdziwy plugin UE C++ -> Python
|
|
|
|
Plugin pokazuje rzeczywisty przeplyw:
|
|
|
|
```text
|
|
TextureRenderTarget2D
|
|
-> Python wywoluje UFUNCTION
|
|
-> C++: FImageUtils::GetRenderTargetImage
|
|
-> C++: FImageUtils::CompressImage(".png")
|
|
-> TArray<uint8> wraca do Pythona
|
|
-> Python zapisuje bytes na dysku
|
|
```
|
|
|
|
## Struktura
|
|
|
|
```text
|
|
DemoPlugin.uplugin
|
|
Source/DemoPlugin/DemoPlugin.Build.cs
|
|
Source/DemoPlugin/Public/DemoRenderBridge.h
|
|
Source/DemoPlugin/Private/DemoRenderBridge.cpp
|
|
Source/DemoPlugin/Private/DemoPlugin.cpp
|
|
use_plugin.py
|
|
```
|
|
|
|
## Jak uruchomic
|
|
|
|
1. Skopiuj caly katalog jako `<Projekt>/Plugins/DemoPlugin`.
|
|
2. Upewnij sie, ze projekt ma modul C++ i wlaczony `Python Editor Script Plugin`.
|
|
3. Otworz projekt i zaakceptuj kompilacje pluginu albo zbuduj projekt w IDE.
|
|
4. Utworz asset `TextureRenderTarget2D` pod `/Game/Demo/RT_Demo` lub zmien
|
|
sciezke `RENDER_TARGET_ASSET` w `use_plugin.py`.
|
|
5. W Unreal Editor wybierz `Tools -> Execute Python Script` i uruchom
|
|
`use_plugin.py`.
|
|
6. Wynik pojawi sie jako `Saved/demo_from_cpp.png`.
|
|
|
|
## Co jest mostem do Pythona
|
|
|
|
- `UCLASS()` rejestruje klase w refleksji.
|
|
- `UFUNCTION(BlueprintCallable)` eksportuje funkcje.
|
|
- `UDemoRenderBridge` staje sie `unreal.DemoRenderBridge`.
|
|
- `RenderTargetToPng` staje sie `render_target_to_png`.
|
|
- `UTextureRenderTarget2D*` przyjmuje obiekt zaladowany w Pythonie.
|
|
- `TArray<uint8>` wraca jako kolekcja konwertowalna przez `bytes(...)`.
|
|
|
|
To jest odchudzona wersja prawdziwego render bridge'a: pomija wybor formatu,
|
|
luminancje, specjalne kodowanie RGB, transport sieciowy i rozbudowana obsluge
|
|
bledow. Zachowuje jednak faktyczne wywolania API C++ Unreala i prawdziwy
|
|
kontrakt widoczny z Unreal Python.
|