advanced example
This commit is contained in:
1 parent
8c0a639fba
commit
6fe57915e8
99 files changed
+1329
-56
No files matched your search
+35
-4
@@ -2,6 +2,15 @@
|
||||
|
||||
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")` |
|
||||
@@ -15,7 +24,7 @@ Import: `from ue_workshop import Scene, Sequence, Renderer, camera, lighting, ma
|
||||
| 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), focal_length=45)` |
|
||||
| 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)` |
|
||||
@@ -37,9 +46,31 @@ Cały obrót: klucze 0 i 360, nie 0 i 0. Kamera i modele to oryginalne obiekty U
|
||||
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="robot"` lub `MODEL="pilot"` wybiera dołączony model.
|
||||
`MODEL="file"` wczytuje `MODEL_FILE`. Obiekt z `scene.model()` ma pivot na podstawie
|
||||
i zachowuje materiały; animacja dotyczy całego modelu, nie jego kości.
|
||||
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.
|
||||
Reference in new issue
Block a user