Files
PythonInUnreal/docs/cheatsheet.md
T
2026-10-31 20:16:32 +01:00

77 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Ściąga — ue_workshop
Import: `from ue_workshop import Scene, Sequence, Renderer, camera, lighting, materials, assets, blender, render`
`REIMPORT=False` w plikach ćwiczeń używa istniejących assetów UE; brakujące są importowane.
`REIMPORT=True` ponownie importuje modele i klipy, także po edycji `.blend`.
Własny skrypt: `scene.skeletal_model(..., reimport=True)` lub `scene.model(..., reimport=True)`.
Nie ma automatycznego wykrywania zmian źródeł.
`camera.create(..., fov=60)` ustawia poziomy kąt widzenia w stopniach: większy FOV
daje szerszy kadr. Zakres: `0 < fov < 180`. Domyślne `43.6` odpowiada obiektywowi
45 mm na sensorze o szerokości 36 mm.
| Operacja | Przykład |
|---|---|
| Własna mapa | `scene = Scene("MyShot")` |
| Kolor PBR (wartości liniowe 0–1) | `mat = materials.color("Red", (0.8, 0.02, 0.01), roughness=0.4)` |
| Prosta postać | `actor = scene.character(material=mat, head_scale=1.3)` |
| Bryła | `scene.primitive("Sphere", name="Ball", location=(0, 100, 50), material=mat)` |
| Import statycznego modelu | `mesh = assets.import_model("C:/models/model.glb", name="MyModel")` |
| Eksport + import Blendera | `mesh = blender.import_character("C:/models/character.blend")` |
| Model na scenie | `actor = scene.mesh(mesh, name="Hero")` |
| Import z dopasowaniem rozmiaru i pivotu | `actor = scene.model("source_assets/models/hero.glb", name="Hero", height=200)` |
| Korekta osi modelu przed dopasowaniem | `actor = scene.model("hero.fbx", rotation=(0, 0, 90))` |
| Światła studyjne | `lights = lighting.studio(scene)` |
| Pojedyncze światło | `lighting.area(scene, location=(200, -200, 350), intensity=10000, color=(1, 0.5, 0.2))` |
| Kamera | `cam = camera.create(scene, location=(450, -550, 300), target=(0, 0, 100), fov=43.6)` |
| Zmiana kierunku | `camera.look_at(cam, (0, 0, 150))` |
| Sekwencja | `shot = Sequence(scene, fps=24, frames=48)` |
| Aktywna kamera | `shot.camera(cam)` |
| Klucz pozycji | `shot.transform_key(actor, 0, location=(0, 0, 0))` |
| Klucz rotacji | `shot.transform_key(actor, 47, rotation=(0, 0, 360))` |
| Klucz skali | `shot.transform_key(actor, 24, scale=(1.2, 1.2, 1.2), interpolation="auto")` |
| Zapis + otwarcie Sequencera | `shot.save()` |
| Własny renderer | `renderer = Renderer(width=1920, height=1080, samples=8, warmup=32, mp4=True)` |
| Preset z własnymi wartościami | `renderer = Renderer.from_preset("final", samples=8)` |
| Render z własnymi ustawieniami | `renderer.render(shot)` |
| Podgląd tym samym rendererem | `renderer.render(shot, single_frame=24)` |
| PNG + MP4 | `render.start(shot, preset="preview")` |
| Tylko PNG | `render.start(shot, mp4=False)` |
| Jedna klatka | `render.start(shot, single_frame=24)` |
UE: centymetry, Z w górę. Rotacja w kluczach: **roll, pitch, yaw**, stopnie.
Klatki: **0..frames-1**, koniec zakresu wyłączny. Interpolacja: `linear`, `auto`, `constant`.
Cały obrót: klucze 0 i 360, nie 0 i 0. Kamera i modele to oryginalne obiekty UE:
możesz wywoływać ich metody, np. `actor.set_actor_label("MyHero")`.
`shot.asset` to oryginalny LevelSequence, `shot.bind(actor)` zwraca binding UE.
W `my_shot.py`: `MODEL="fighter"` lub `MODEL="creature"` wybiera postać ze szkieletem.
Nazwy klipów pochodzą z plików, np. `great_sword_walk` i `mutant_swiping`.
`scene.skeletal_model(...)` samo znajduje wszystkie FBX obok modelu — bez `animations`.
Dostępne jest 51 animacji fighter i 12 animacji creature; [pełny katalog](animations.md).
Własny FBX lub `.blend`
z Armature: `MODEL="file"`, `SKELETAL=True`, `MODEL_FILE=...`.
`ANIMATION_FILE=None` odtwarza animację z pliku modelu; można wskazać osobny FBX
z animacją dla tego samego szkieletu. Dla statycznego modelu ustaw `SKELETAL=False`.
```python
character = scene.skeletal_model("source_assets/character/my_character.fbx", name="Hero")
shot.animation(character) # tylko gdy postac ma jedna dostepna animacje
# Gdy jest ich wiecej: shot.animation(character, "nazwa_pliku_animacji")
# Albo nazwane klipy: scene.skeletal_model(..., animations={"walk": walk_fbx, "idle": idle_fbx})
# shot.animation(character, "walk", start=0, end=48, speed=1.0)
# shot.animation(character, "idle", start=48, end=120)
# Plynne przejscie: pierwszy klip 0..60, drugi 48..120:
# shot.animation(character, "walk", start=0, end=60)
# shot.animation(character, "idle", start=48, end=120) # automatyczny blend 12 klatek
```
Krótsza animacja zapętla się w swojej sekcji. `transform_key` porusza całym aktorem
równolegle z animacją kości. Do własnych tras wybieraj klipy In Place.
Blender: kolekcja `Character`, siatki przypisane do jednego Armature, aktywna akcja
i zakres klatek sceny. Zapisz plik przed ponownym uruchomieniem skryptu w UE.
Przy pojedynczym podglądzie nie uruchamiaj dodatkowo pełnego renderu:
jednocześnie może pracować tylko jeden renderer warsztatowy.