Skadnia wiersza polece
================================================================================

Tools <operacja> <zadanie> <zadanie> <opcja> <opcja> ...

- Jest jeden rodzaj operacji na raz.
- Dopuszczalne zadania i opcje s zalene od wybranej operacji.
- Opcje mog by dowolnie wymieszane, ich pozycja nie ma znaczenia.
- Zadania s wykonywane po kolei tak jak podane.


OPERACJA /Mesh
--------------------------------------------------------------------------------

Operacje na siatce w formacie QMSH.

- Pierwszym zadaniem musi by wczytanie lub wygenerowanie siatki (obecnie
  dostpne tylko /i).


Dostpne zadania:
-----------------

/i=<NazwaPliku>
Wczytanie pliku ("i" jak Input).
Format rozpoznawany jest po rozszerzeniu. Wspierane formaty:
> .qmsh - gwny format modeli
> .qmsh.tmp - format poredni eksportu z Blendera

/o=<NazwaPliku>
Zapisanie pliku ("o" jak Output).
Format rozpoznawany jest po rozszerzeniu. Wspierane formaty:
> .qmsh - format natywny QMSH

/I
Informacje o biecej siatce. "i" jak Informacje.

/v
Szczegowe informacje o bieacej siatce (cznie z list obiektw itd.) "v" jak
Verbose.

/Mend
Uruchamia NvMeshMender ponownie wyliczajc tangent i binormal (o ile podane
/Tangents) oraz normalne (o ile nie podane /NoCalcNormals). Na dziaanie tego
polecenia wpywaj opcje: /Tangents /MaxSmoothAngle /NoCalcNormals
/RespectExistingSplits /FixCylindricalWrapping.

/Translate=X,Y,Z
"/Translate=X,Y,Z|Object:Nazwa"
Translacja pozycji wierzchokw - wszystkich lub podanego obiektu.
Przeksztacenie zostaje wprowadzone tylko dla pierwszego obiektu o tej nazwie.
Przeksztacenia wprowadza te do normalnych, tangentw i koci, ale do koci
tylko jeli przeksztacenie dotyczy caego obiektu. Niestety mimo tego czasami
po transformacji animacja si krzaczy - nie wiem dlaczego.
Przykad: "/Translate=2.5,0,0|Object:Cube"

/RotateYawPitchRoll=Yaw,Pitch,Roll
"/RotateYawPitchRoll=Yaw,Pitch,Roll|Object:Nazwa"
Obrt wierzchokw o podane kty Eulera. Uwagi jak dla /Translate.

/RotateQuaternion=x,y,z,w
"/RotateQuaternion=x,y,z,w|Object:Nazwa"
Obrt wierzchokw o podany kwaternion. Uwagi jak dla /Translate.

/RotateAxisAngle=x,y,z;a
"/RotateAxisAngle=x,y,z;a|Object:Nazwa"
Obrt o podany kt a wok osi podanej przez wektor x,y,z. Uwagi jak dla
/Translate.

/Scale=v
/Scale=x,y,z
"/Scale=v|Object:Nazwa"
"/Scale=x,y,z|Object:Nazwa"
Skalowanie pozycij wierzchokw. Uwagi jak dla /Translate.

/Transform=a11,a12,a13,a14;a21,a22,a23,a24;a31,a32,a33,a34;a41,a42,a43,a44
"/Transform=a11,a12,a13,a14;a21,a22,a23,a24;a31,a32,a33,a34;a41,a42,a43,a44|Object:Nazwa"
Dowolna transformacja pozycji wierzchokw przez podan macierz. Uwagi jak dla
/Translate. Macierz moe zawiera wszystko, cznie z translacj i nawet
rzutowaniem.

/CenterOnAverage
/CenterOnMedian
"/CenterOnAverage|Object:Nazwa"
"/CenterOnMedian|Object:Nazwa"
Translacja wierzchokw celem wycentrowania na redniej arytmetycznej lub
medianie z ich pozycji. Uwagi jak dla /Translate. Ewentualna rednia, mediana
czy centrowanie liczone s zawsze na podstawie granic caego modelu, nie
podanego obiektu.

/TransformToBox=p1x,p1y,p1z;p2x,p2y,p2z
/TransformToBoxProportional=p1x,p1y,p1z;p2x,p2y,p2z
"/TransformToBox=p1x,p1y,p1z;p2x,p2y,p2z|Object:Nazwa"
"/TransformToBoxProportional=p1x,p1y,p1z;p2x,p2y,p2z|Object:Nazwa"
Translacja oraz skalowanie wierzchokw tak, aby cay model zmieci si w
podanym prostopadocianie AABB. Uwagi jak dla /Translate. Ewentualna rednia,
mediana czy centrowanie liczone s zawsze na podstawie granic caego modelu, nie
podanego obiektu.

/TranslateTex=X,Y
"/TranslateTex=X,Y|Object:Nazwa"
Translacja wsprzdnych tekstury - wszystkich wierzchokw lub tylko
wierzchokw podanego obiektu. Przeksztacenie zostaje wprowadzone tylko dla
pierwszego obiektu o podanej nazwie.

/ScaleTex=S
/ScaleTex=X,Y
"/ScaleTex=S|Object:Nazwa"
"/ScaleTex=X,Y|Object:Nazwa"
Skalowanie wsprzdnych tekstury. Uwagi jak dla /TranslateTex.

/TransformTex=a11,a12,a13,a14;a21,a22,a23,a24;a31,a32,a33,a34;a41,a42,a43,a44
"/TransformTex=a11,a12,a13,a14;a21,a22,a23,a24;a31,a32,a33,a34;a41,a42,a43,a44|Object:Nazwa"
Transformacja wsprzdnych tekstury przez dowoln macierz 4x4. Uwagi jak dla
/TranslateTex. Macierz moe zawiera wszystko, cznie z translacj i nawet
rzutowaniem.

/NormalizeNormals
Normalizacja normalnych i jeli s to take tangent i binormal.

/ZeroNormals
Zerowanie normalnych i jeli s to take tangent i binormal.

/DeleteTangents
Jeli s, to usuwa z modelu tangent i binormal.

/DeleteSkinning
Usuwa z modelu wszelkie informacje o kociach i animacjach.

/DeleteObject=Nazwa
Usuwa obiekt o podanej nazwie.

/RenameObject=Nazwa1:Nazwa2
Zmienia nazw obiektu.

/RenameMaterial=Nazwa1:Nazwa2
Zmienia nazw materiau (wszystkie wystpienia).

/SetMaterial=NazwaObiektu:NowaNazwaMateriau
Zmienia nazw materiau dla podanego obiektu.

/SetAllMaterials=NowaNazwaMateriau
Zmienia nazw materiaw wszystkich obiektw na podan.

/RenameBone=Nazwa1:Nazwa2
Zmienia nazw koci.

/RenameAnimation=Nazwa1:Nazwa2
Zmienia nazw animacji.

/DeleteAnimation=Nazwa
Usuwa podan animacj.

/DeleteAllAnimations
Usuwa wszystkie animacje. Koci zostaj.

/ScaleTime=x
"/ScaleTime=x|Animation:Nazwa"
Skaluje czas podanej animacji lub wszystkich animacji.

/OptimizeAnimations
Optymalizuje wszystkie animacje - usuwa te klatki kluczowe, ktre nic nie wnosz
bo le dokadnie na interpolacji midzy ssiednimi.

/RecalcBoundings
Ponownie przelicza bryy otaczajce model. Nie naley tego uywa - one i tak
licz si same.

/FlipNormals
Zmienia zwrot wektorw normalnych. Stosowa np. po skalowaniu ujemnym
(odbijaniu).

/FlipFaces
Zmienia kolejno wierzchokw w trjktach - odwraca ich stron na drug.
Stosowa np. po skalowaniu ujemnym (odbijaniu).

/RemoveAnimationMovement
Specjalny algorytm sprowadzajcy animacje modelu z takiej ktra przesuwa obiekt
do takiej, w ktrej obiekt tylko przebiera koczynami w miejscu. Robi to
modyfikujc translacj dla koci gwnego poziomu.

/Validate
Wszechstronne sprawdzenie siatki i pokazanie raportu z ostrzeeniami i bdami
co jest w niej le.

/NormalizeQuaternions
Normalizuje kwaterniony obrotu w klatkach kluczowych wszystkich animacji.


Dodatkowe opcje:
----------------

/MaxSmoothAngle=<Kt_w_stopniach>
Maksymalny kt przy ktrym ma nastpowa wygadzanie, kiedy odpalany jest
NVMeshMender. Nie dotyczy odpalania go w ramach konwersji z formatu QMSH TMP -
wtedy brane jest pod uwag ustawienie kta AutoSmooth z wyeksportowanej
siatki.

/NoCalcNormals
Czy uruchamiany NVMeshMender ma wyliczy od nowa normalne, a nie tylko tangent i
binormal. Nie dotyczy odpalania go w ramach konwersji z formatu QMSH TMP - wtedy
normalne musz zosta wyliczone, bo nie ma ich pocztkowo wcale.
Domylnie: true

/RespectExistingSplits
Ustawienie podczas uruchamiania NVMeshMender - czy respektowa to e dwa
wierzchoki lece w jednym miejscu pozostan dwoma osobnymi wierzchokami nawet
jeli wg kryteriw wygadzania mogyby sta si jednym.
Domylnie: false

/FixCylindricalWrapping
Ustawienie podczas uruchamiania NVMeshMender.
Domylnie: false
UWAGA: Jeli NvMeshMender wysypuje program lub daje w wyniku bdne normalne
lub tangenty, sprbuj nie poda dej opcji - powinno pomc.

/Tangents
Czy wylicza wektory Tangent i Binormal podczas uruchamiania NVMeshMender.
Take, czy wyjciowa siatka ma mie Tangent i Binormal.
Domylnie: false


OPERACJA /Map
--------------------------------------------------------------------------------

Operacje na mapie w formacie QMAP.

- Pierwszym zadaniem musi by wczytanie lub wygenerowanie mapy (obecnie dostpne
tylko /i).

Dostpne zadania:

- /i=<NazwaPliku>
  Jak Input.
  Wczytanie pliku.
  Format rozpoznawany jest po rozszerzeniu. Wspierane formaty:
  > .qmap.tmp - format poredni eksportu z Blendera
- /o=<NazwaPliku>
  Jak Output.
  Zapisanie pliku.
  Format rozpoznawany jest po rozszerzeniu. Wspierane formaty:
  > .qmap - format natywny QMAP
- /I
  Jak Info.
  Informacje o biecej mapie.
- /v
  Jak Verbose.
  Szczegowe informacje o bieacej mapie.

Dodatkowe opcje:

- /d=<NazwaPliku>
  Plik .qmap.desc zawierajcy opis dodatkowych danych dla mapy
  Domylnie: Brak, bez niego materiay nazywaj si tak jak w pliku wejciowym
- /Bounds=x1,y1,z1;x2,y2,z2
  Rcznie podane granice stanowice podstaw podziau przestrzeni na swobodne
  drzewo semkowe Octree.
  Domylnie: Wyliczane automatycznie na podstawie geometrii.
- /K=<Liczba>
  Liczba (0..1) to rozszerzenie dla wzw swobodnego drzewa semkowego.
  0 oznacza zwyczajne drzewo semkowe. 1 to ju stanowczo za duo.
  Domylnie: 0.25
- MaxOctreeDepth=<Liczba>
  Maksymalna gboko drzewa.
  Domylnie: 9


OPERACJA /Texture
--------------------------------------------------------------------------------

Operacje na teksturach 2D w dowolnym formacie graficznym i dowolnej
rozdzielczoci (niekoniecznie potga dwjki).

- Pierwszym zadaniem musi by wczytanie lub wygenerowanie tekstury.

Dostpne zadania:

- /i=<NazwaPliku>
  Jak Input.
  Wczytanie pliku tekstury.
  Format rozpoznawany jest po rozszerzeniu. Wspierane formaty takie jak D3DX:
  BMP, JPEG, TGA, PNG, DDS, PPM, DIB, HDR, PDM
- /o=<NazwaPliku>
  Jak Output.
  Zapisanie pliku tekstury.
  Format rozpoznawany jest po rozszerzeniu. Wspierane formaty takie jak w /i.
- /I
  Jak Info.
  Informacje o biecej teksturze.
- /v
  Jak Verbose.
  Szczegowe informacje o bieacej teksturze.
- /Swizzle=XXXX
  Mieszanie kanaw tekstury. Kolejne z 4 znakw oznaczaj kanay docelowe: A,
  R, G, B. Kady z nich ma znak odpowiadajcy wartoci ktra ma do niego trafi:
  > 0 - warto 0
  > 1 - warto 255
  > R - warto kanau R
  > G - warto kanau G
  > B - warto kanau B
- /SharpenAlpha=BackgroundColor
  Zaawansowany filtr zmieniajacy obrazek z kanaem alfa na taki, ktry nada si
  do stosowania Alpha-Testing. Obrazek wejciowy moe posiada pynne granice
  przezroczystoci. Obrazek wyjciowy posiada w kanale alfa zawsze 0 lub 255.
  AlphaThreshold to warto alfa, poczwszy od ktrej piksel jest uznawany jako
  nieprzezroczysty. BackgroundColor to kolor ta, jakie mia obrazek przed jego
  wyciciem. Polecenie wykorzystuje ten kolor, by przefiltrowa pprzezroczyste
  krawdzie i w ten sposb pozby si brzydkiego "halo" na granicach.
- /ClampTransparent
  Wypenia kolory pikseli przezroczystych kolorem najbliszego
  nieprzezroczystego piksela w poziomie lub w pionie, co zapobiega
  "przeciekaniu" kolorw pikseli przezroczystych np. przy mipmappingu.

Dodatkowe opcje:

- /AlphaThreshold=x
  X = 1..255, granica wartoci kanau alfa, poczwszy od ktrej piksel uznawany
  jest jako nieprzezroczysty we wszystkich poleceniach wymagajcych jasno
  okrelonej granicy przezroczystoci.
