workshop rework
This commit is contained in:
1 parent
a3a80dfa16
commit
fb39e290c0
115 files changed
+1865
-497
No files matched your search
@@ -0,0 +1,39 @@
|
||||
# Ściąga — ue_workshop
|
||||
|
||||
Import: `from ue_workshop import Scene, Sequence, Renderer, camera, lighting, materials, assets, blender, render`
|
||||
|
||||
| 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")` |
|
||||
| Ś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)` |
|
||||
| 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.
|
||||
|
||||
Przy pojedynczym podglądzie nie uruchamiaj dodatkowo pełnego renderu:
|
||||
jednocześnie może pracować tylko jeden renderer warsztatowy.
|
||||
@@ -0,0 +1,33 @@
|
||||
# Weryfikacja v1 — 31 października 2026
|
||||
|
||||
Sprawdzone lokalnie: Windows, Unreal Engine 5.7, Blender 5.1.2 i FFmpeg.
|
||||
Nie uruchamiano testów na Linuksie ani na Blenderze 4.x.
|
||||
|
||||
- Testy poza UE: 7 zaliczonych, w tym rzeczywiste kodowanie dwóch PNG do MP4,
|
||||
odczyt częściowo zapisanych komunikatów i raportowanie liczby klatek.
|
||||
- Postęp headless: sprawdzone etapy od startu UE do jego zamknięcia,
|
||||
licznik zapisanych PNG i cichy zapis pełnych logów do pliku.
|
||||
- Obiekt `Renderer`: własne 320×180, dwie próbki, rozgrzewka 0; sprawdzone
|
||||
właściwości MRQ i rzeczywiste wymiary PNG. Walidacja błędnych argumentów
|
||||
i nadpisywanie presetu. Launcher używa obiektu ze skryptu: sprawdzone 400×224.
|
||||
- Dwukrotne wykonanie ćwiczenia w UE: bez dodatkowych aktorów, bindingów i Camera Cuts.
|
||||
- Render MRQ w procesie edytora uruchomionym bez okna: 48 PNG oraz MP4, 24 FPS.
|
||||
- `python exercises/my_shot_headless.py`: pełne ćwiczenie 1920×1080, 4 próbki,
|
||||
rozgrzewka 32, 48 PNG i MP4. UE zamknął się automatycznie; oba kody zakończenia 0.
|
||||
- Podgląd pojedynczej klatki z terminala (`--single-frame 24`): zaliczony.
|
||||
- Odroczone zamknięcie edytora po renderze: kod zakończenia UE i launchera 0.
|
||||
- Zwykły `UnrealEditor.exe`: projekt otwiera się bez żądania aktualizacji targetu
|
||||
po usunięciu pozostałych receiptów i cache kompilacji UE 5.8.
|
||||
- Wizualnie sprawdzony kadr, ekspozycja i wygenerowana postać.
|
||||
- Pełny edytor z działającym UI Sequencera: otwarcie sekwencji, ticki UI,
|
||||
przebudowa sceny i dwa kolejne rendery po 48 klatek do MP4 w jednym procesie.
|
||||
Renderer startuje przez MoviePipelineQueueSubsystem po powrocie ze skryptu;
|
||||
Sequencer jest zamykany przed przebudową bindingów oraz rozpoczęciem PIE.
|
||||
- Blender: eksport zapisanej kolekcji, trzy materiały, aktualizacja istniejącego
|
||||
StaticMesh pod tą samą ścieżką po zmianie geometrii.
|
||||
- Zmiana koloru materiału oraz dodanie osadzonej tekstury: sprawdzone wartości
|
||||
parametrów UE, przypisanie tekstury i render do MP4.
|
||||
|
||||
Uruchamianie sprawdzeń jest opisane w README. Wyniki każdego renderu są zapisane
|
||||
w jego `result.json`; logi UE znajdują się w `Saved/Logs`.
|
||||
Skrypty integracyjne generują własne mapy i assety w `Workshop/Generated`.
|
||||
@@ -0,0 +1,25 @@
|
||||
# Spotkanie — 60 minut
|
||||
|
||||
Przed spotkaniem: UE 5.7, pobrany projekt, skompilowane shadery, sprawdzony render.
|
||||
FFmpeg potrzebny do MP4, Blender opcjonalnie. Przygotuj gotowy film na wypadek
|
||||
wolniejszego sprzętu. Nie poświęcaj części praktycznej na instalowanie narzędzi.
|
||||
|
||||
| Minuty | Działanie |
|
||||
|---|---|
|
||||
| 0–15 | Python w edytorze, wykonanie pliku, aktor i asset, pokaz Blender → film. |
|
||||
| 15–23 | `my_shot.py`: model, scena, klucze, Camera Cuts, render. Pokaż wynik w UI. |
|
||||
| 23–53 | Własna kopia ćwiczenia, zmiany i krótki render. |
|
||||
| 53–60 | Wyniki, pytania, pokaz launchera bez okna. |
|
||||
|
||||
Propozycje zadań, bez obowiązku wykonania wszystkich:
|
||||
|
||||
1. Zmień kolory postaci i oświetlenia, powiększ głowę.
|
||||
2. Zmień pozycję i ogniskową kamery. Zrób pojedynczy podgląd.
|
||||
3. Dodaj klucz w środku sekwencji: podskok albo zmianę skali.
|
||||
4. Animuj kamerę — przykład w `examples/animated_camera.py`.
|
||||
5. Opcjonalnie: zmień model w Blenderze i wykonaj `examples/blender_character.py`.
|
||||
|
||||
Punkt ratunkowy: świeża kopia `exercises/my_shot.py` z Git. Do pierwszych prób
|
||||
zostaw `RENDER=False` i oglądaj Sequencera. Do renderu włącz `RENDER=True`.
|
||||
Przy powrocie do skryptu pamiętaj wyłączyć drugi render, jeżeli dodajesz wywołanie
|
||||
`render.start` ręcznie. Pokaż gdzie są PNG oraz `result.json`.
|
||||
Reference in new issue
Block a user