PBR:
http://blogs.unity3d.com/2015/02/18/working-with-physically-based-shading-a-practical-approach/
http://www.marmoset.co/toolbag/learn/materials
Star Citizenin decal-tekniikka:
http://polycount.com/discussion/155894/decal-technique-from-star-citizen
https://www.reddit.com/r/starcitizen/comments/3ogi3o/im_an_tech_artist_in_the_industry_and_id_love_to/
http://forum.unity3d.com/threads/how-do-i-write-a-normal-decal-shader-using-a-newly-added-unity-5-2-finalgbuffer-modifier.356644/
Face weighted normals:
http://polycount.com/discussion/154664/a-short-explanation-about-custom-vertex-normals-tutorial
Tekstuurien blendaus vertex-värien ja heightmapien avulla:
http://polycount.com/discussion/150116/unity-5-mesh-vertex-painting-for-texture-how
http://docs.cryengine.com/display/SDKDOC2/Blend+Layer
Lohkeilleet edget:
http://docs.cryengine.com/display/SDKDOC2/Using+Decals+for+Destroyed+Structures
The Ultimate Trim:
http://www.gdcvault.com/play/1022324/The-Ultimate-Trim-Texturing-Techniques
Modulaarinen mallinnus:
http://wiki.polycount.com/w/images/7/70/Investigation_into_modular_design_within_computer_games_v1.0.pdf
http://www.kevinjohnstone.com/Help/Modular%20Environment%20Design.rar
perjantai 13. marraskuuta 2015
keskiviikko 4. marraskuuta 2015
3ds Max: Lohjenneiden reunojen mallintaminen
Mallinna lowpoly-malli käyttäen Smoothing Groupeja.
Lisää siihen Subdivide-modifier tarpeeksi pienellä Size-arvolla.
Lisää stackiin Edit Poly -modifier ja collapsoi modifierit. Kaarevista pinnoista tulee jälleen kulmikkaat, koska verteksien normaalit resetoituvat.
Saadaksesi kaarevat pinnat jälleen sulaviksi, lataa skripti, ja valitse sillä kaikki smoothing groupeja rajaavat edget.
Paina ko. edget valittuna Editable Polysta Split, jolloin kukin Smoothing group erotellaan irtonaiseksi elementiksi. Älä poista edge-valintaa.
Lisää Relax-modifier Valuella 1 ja Iterationsilla 10, jolloin kaarevista pinnoista tulee jälleen sulavat.
Kollapsoi Relax-modifier ja Editable Polyssä Weldaa irtonaiset verteksit yhteen.
Aiempi edge-valinta on edelleen jäljellä niin, että osa valinnasta poistettu, kuten pitääkin.
Konvertoi edge-valinta polygon-valinnaksi ja halutessasi kasvata valintaa kerran. Poista valinnasta halutessasi nurkissa olevien edgejen valinnat.
Lisää stackiin Tessellate Tensionilla 0 ja Iterationsilla 1, jolloin valittuja polygoneja monistetaan.
Lisää stackiin Relax Valuella 1,0 ja mahd. korkealla Iterationsilla, jolloin valitut polygonit painetaan tasaiseksi.
Lisää stackiin Noise melko pienellä Scalella ja n. 0,5 cm:n Strengthillä joka suuntaan, jotta polygonivalinnasta tulee rosoinen.
Lisää stackiin Turbosmooth yhdellä Iterationsilla.
tiistai 27. lokakuuta 2015
3ds Max (& Unity): AO:n beikkaaminen vertex-väreihin
Tee skeneen skylight.
Valitse Render Setupista Advanced Lightingiksi Radiosity.
Laita Radiosityn parametreihin Refine Iterationsiin ja Indirect Lightiin arvo 1.
Laita Rendering Parametersistä Re-Use Direct Illumination from Radiosity Solution aktiiviseksi.
Paina Start ja anna laskea jonkin aikaa. Paina sitten Stop.
Valitse Utilitiesista Assign Vertex Colors.
Paina alareunasta Assign to selected, jolloin vertex-värit liitetään malliin.
Unity: Saadaksesi vertex colorin näkyviin Unityssä, lisää shaderin o.albedo-kohtaan * IN.color.rgb.
Valitse Render Setupista Advanced Lightingiksi Radiosity.
Laita Radiosityn parametreihin Refine Iterationsiin ja Indirect Lightiin arvo 1.
Laita Rendering Parametersistä Re-Use Direct Illumination from Radiosity Solution aktiiviseksi.
Paina Start ja anna laskea jonkin aikaa. Paina sitten Stop.
Valitse Utilitiesista Assign Vertex Colors.
Paina alareunasta Assign to selected, jolloin vertex-värit liitetään malliin.
Unity: Saadaksesi vertex colorin näkyviin Unityssä, lisää shaderin o.albedo-kohtaan * IN.color.rgb.
tiistai 22. syyskuuta 2015
3ds Max: Tailaavan isometrisen tasohyppelytilesetin mallintaminen
Mallinna yhden "tileyksikön" kokoinen plane.
Kopioi ko. plane instanssina joka suuntaan niin, että alkuperäinen jää keskelle. Lopuksi planeja on yhteensä yhdeksän kappaletta
Mallinna planeista sen muotoiset kuin haluat.
Pidä huoli, että planejen reunojen verteksit ovat yhdessä eivätkä jätä aukkoja planejen saumoihin. Esim. jos käytät Noise-modifieria, laita sen yläpuolelle stäkkiin Edit poly, jolla liikutat reunojen verteksit yhteen.
Renderöi plane-mallista tailaava height map.
Mallinna 9 x 9 -tileyksikön kokoinen särmiö. Tee siitä tiheäpolygoninen esim. subdividellä ja pyöristä kulmat halutessasi Relaxilla.
Mappaa särmiö yhden tileyksikön kokoisella Box-projisoinnilla.
Laita siihen displace-modifier ja sen tekstuuriksi renderöimäsi tailavaa height map.
Lisää särmiöön kaksi Skew-modifieria, jotta suoraan edestä orthografisesti katsottuna näyttää siltä, että näkymä on hieman yläviistosta.
Kopioi ko. plane instanssina joka suuntaan niin, että alkuperäinen jää keskelle. Lopuksi planeja on yhteensä yhdeksän kappaletta
Mallinna planeista sen muotoiset kuin haluat.
Pidä huoli, että planejen reunojen verteksit ovat yhdessä eivätkä jätä aukkoja planejen saumoihin. Esim. jos käytät Noise-modifieria, laita sen yläpuolelle stäkkiin Edit poly, jolla liikutat reunojen verteksit yhteen.
Renderöi plane-mallista tailaava height map.
Mallinna 9 x 9 -tileyksikön kokoinen särmiö. Tee siitä tiheäpolygoninen esim. subdividellä ja pyöristä kulmat halutessasi Relaxilla.
Mappaa särmiö yhden tileyksikön kokoisella Box-projisoinnilla.
Laita siihen displace-modifier ja sen tekstuuriksi renderöimäsi tailavaa height map.
Lisää särmiöön kaksi Skew-modifieria, jotta suoraan edestä orthografisesti katsottuna näyttää siltä, että näkymä on hieman yläviistosta.
tiistai 15. syyskuuta 2015
3ds Max & mental ray: Latitude-longitude-muotoisen kuvan renderöiminen
http://www.andrewhazelden.com/blog/2011/01/latlong_lens-and-cubemap_lens-mental-ray-shaders-compiled-for-maya-2011-x64-on-windows/
Ko. sivulta ladattavalta on mahdollista renderöidä latitude-longitude-muotoinen kuva Maxin kamerasta.
Ko. sivulta ladattavalta on mahdollista renderöidä latitude-longitude-muotoinen kuva Maxin kamerasta.
perjantai 12. kesäkuuta 2015
3ds Max & mental ray: Studiovalaistus
TARGET PHOTOMETRIC LIGHTS:
1. Aseta renderöintiengineksi mental ray.
2. Tee kaareva taustaplane Plane-objektista, jatkamalla sen takana olevaa edgeä ylös sekä lisäämällä TurboSmoothin.
3. Tee teepannu ja aseta se origoon. Laita siihen default Arch & Design -materiaali.
4. Tee Target Light Photometric-valikosta ja aseta sen target origoon.
5. Shadows: Ray Traced Shadows, Emit light from: Rectangle, Light Shape Visible in Rendering päälle sekä Adv Effectsistä Specular pois.
6. Valitse intensity eli valovoima sopivaksi. Yksiköt:
Valovoiman mittayksikkö on kandela (cd).
Valovirta eli luumen (lm) kuvaa kuinka paljon näkyvää valoa valonlähde säteilee kokonaisuudessaan.
Valovirta siis kertoo kuinka voimakas valonlähde on kokonaisuudessaan, kun taas valovoima kertoo valonlähteen havaitun voimakkuuden tietylle alalle eli yhtä steradiaania kohden.
1 kandela (cd) = yksi kynttilä
1 luumen (lm) = 1 kandela * steradiaani (sr)
1 luksi (lx) = 1 lm / m².
7. Valitse pelkkä lamppu ja siirrä sitä shift-pohjassa tehdäksesi uuden, jolloin target pysyy samassa paikassa.
8. Tee tarvittaessa vielä yksi lamppu kopioimalla jompikumpi lampuista objektin yläpuolelle.
9. Erota teepannuobjektin osat omiksi mat id:eikseen ja tee tee pannulle multi sub object -materiaali ja eri id:eille oma materiaali.
10. Säädä Exposure Controlista Exposure Value (EV) -arvo sopivaksi.
HDR ENVIRONMENT:
1. Valitse Environment Mapiksi HDR-kuva ja aseta White Point sopivaksi.
2. Tee HDR-mapista Instance-kopio Material Editoriin raahaamalla se sinne.
3. Aseta HDR-mapin Mapping Sphericaliksi.
4. Tee skeneen pallo ja laita siihen kromimatsku, josta näkee miten päin HDR-map on skenessä.
5. Muuta tarvittaessa HDR-mapin Offsetin U-arvoa kääntääksesi HDR-kuvaa sekä Outputin Output Amountia tehdäksesi siitä kirkkaamman.
6. Tee skeneen Skylight-valo-objekti ja laita Use Scene Environment päälle.
7. Jos haluat valaistuksesta kirkkaamman ilman että HDR:stä tulee kirkkaampi, nosta Skylightin Multiplier-arvoa.
1. Aseta renderöintiengineksi mental ray.
2. Tee kaareva taustaplane Plane-objektista, jatkamalla sen takana olevaa edgeä ylös sekä lisäämällä TurboSmoothin.
3. Tee teepannu ja aseta se origoon. Laita siihen default Arch & Design -materiaali.
4. Tee Target Light Photometric-valikosta ja aseta sen target origoon.
5. Shadows: Ray Traced Shadows, Emit light from: Rectangle, Light Shape Visible in Rendering päälle sekä Adv Effectsistä Specular pois.
6. Valitse intensity eli valovoima sopivaksi. Yksiköt:
Valovoiman mittayksikkö on kandela (cd).
Valovirta eli luumen (lm) kuvaa kuinka paljon näkyvää valoa valonlähde säteilee kokonaisuudessaan.
Valovirta siis kertoo kuinka voimakas valonlähde on kokonaisuudessaan, kun taas valovoima kertoo valonlähteen havaitun voimakkuuden tietylle alalle eli yhtä steradiaania kohden.
1 kandela (cd) = yksi kynttilä
1 luumen (lm) = 1 kandela * steradiaani (sr)
1 luksi (lx) = 1 lm / m².
7. Valitse pelkkä lamppu ja siirrä sitä shift-pohjassa tehdäksesi uuden, jolloin target pysyy samassa paikassa.
8. Tee tarvittaessa vielä yksi lamppu kopioimalla jompikumpi lampuista objektin yläpuolelle.
9. Erota teepannuobjektin osat omiksi mat id:eikseen ja tee tee pannulle multi sub object -materiaali ja eri id:eille oma materiaali.
10. Säädä Exposure Controlista Exposure Value (EV) -arvo sopivaksi.
HDR ENVIRONMENT:
1. Valitse Environment Mapiksi HDR-kuva ja aseta White Point sopivaksi.
2. Tee HDR-mapista Instance-kopio Material Editoriin raahaamalla se sinne.
3. Aseta HDR-mapin Mapping Sphericaliksi.
4. Tee skeneen pallo ja laita siihen kromimatsku, josta näkee miten päin HDR-map on skenessä.
5. Muuta tarvittaessa HDR-mapin Offsetin U-arvoa kääntääksesi HDR-kuvaa sekä Outputin Output Amountia tehdäksesi siitä kirkkaamman.
6. Tee skeneen Skylight-valo-objekti ja laita Use Scene Environment päälle.
7. Jos haluat valaistuksesta kirkkaamman ilman että HDR:stä tulee kirkkaampi, nosta Skylightin Multiplier-arvoa.
Photoshop: 3d-rendauksen tyylittely 1
Avaa rendaus Photarissa.
Laita siihen seur. järjestyksessä:
- Oil paint -filtteri
- Accented Edges
- Spatter
- Pieni Noise ja blur
Sitten kopioi lopputulos uudelle layerille, laita siihen Gauss Blur ja blend modeksi Overlay ja laske opacityä.
Laita siihen seur. järjestyksessä:
- Oil paint -filtteri
- Accented Edges
- Spatter
- Pieni Noise ja blur
Sitten kopioi lopputulos uudelle layerille, laita siihen Gauss Blur ja blend modeksi Overlay ja laske opacityä.
Unity: C#-perusteet
https://www.youtube.com/watch?v=apJoi_YFVqk
Variablet eli muuttujat pitävät sisällään tietoa.
------------------
//variables.cs:
using UnityEngine;
using System.Collections;
public class Variables : MonoBehaviour
//MonoBehav. on yläluokka, jonka alla kaikki muut skriptit ovat.
//Huomaa että määritellyn luokan pitää olla sama kuin skriptitiedoston nimi:
//ko. tapauksessa Variables.
{
public string myName = "Jonathan";
//luodaan myName-niminen "julkinen" tekstimuuttuja ja annetaan sille arvo "Jonathan".
public float speed = 5.5f;
//luodaan speed-niminen julkinen desimaalilukumuuttuja ja annetaan sille arvo 5.5. Huomaa f-kirjain!
private int myAge 22;
//luodaan myAge-niminen "yksityinen" kokonaislukumuuttuja ja annetaan sille arvo 22.
//Koska ko. muuttuja on yksityinen, mikään muu luokka ei voi päästä siihen käsiksi,
//vain tämä skripti.
public bool isCool = true;
//luodaan isCool-niminen "julkinen" totuusarvomuuttuja ja annetaan sille arvoksi "true" eli tosi.
}
------------------
//IfThenStatements.cs:
using UnityEngine;
using System.Collections;
public class IfThenStatements : MonoBehaviour
{
public int myAge = 22;
private bool canDrink = false;
void Start () //Ko. funktio suoritetaan ohjelman käynnistyessä.
{
if (myAge > 17)
{
Debug.Log("Olen yli 17-vuotias.");
canDrink = true; //Muutetaan canDrink-boolean todeksi.
}
else if (myAge < 5)
{
Debug.Log("Olen alle 5-vuotias.");
canDrink = false; //Muutetaan canDrink-boolean epätodeksi.
}
else
{
Debug.Log("Ikäni on 5 ja 17 välillä.");
canDrink = false;
}
//Jos kok.luku myAge on suurempi kuin 17, tehdään if-toiminto,
//mutta jos kok.luku myAge on pienempi kuin 5, tehdään else if toiminto.
//Jos kok.luku on 5 ja 17 välillä, tehdään else-toiminto.
}
void Update () //Ko. funktiota suoritetaan kokoajan ohjelman aikana.
{
if (canDrink == true)
{
Debug.Log("Saat juoda!");
}
else
{
Debug.Log("Olet liian nuori juomaan!");
}
//Jos boolean-arvo canDrink on tosi, tehdään if-toiminto, muuten else-toiminto.
}
}
------------------
//LogicOperators.cs:
using UnityEngine;
using System.Collections;
public class LogicOperators : MonoBehaviour
{
public int a;
public int b;
public int c;
private int average;
void Start ()
{
average = (a + b + c) / 3;
Debug.Log(average);
// Määritetään kok.luku averagen arvo laskemalla a, b ja c yhteen ja jakamalla summa kolmella.
// Tämän jälkeen tulostetaan muuttujan average arvo konsoliin.
}
}
------------------
//SwitchStatements.cs
using UnityEngine;
using System.Collections;
public class SwitchStatements : MonoBehaviour
{
public int a;
public int b;
public int c;
private int average;
void Start ()
{
average = (a + b + c) / 3;
switch(average)
{
case 16:
Debug.Log("Keskiarvo on 16!");
break;
case 10:
Debug.Log("Keskiarvo on 10!");
break;
default:
Debug.Log("Keskiarvo on jokin muu kuin 16 tai 10.");
break;
//Jos kok.luvun average-arvo on 16 tai 10, tehdään kaksi ylintä casea, muuten tehdään default-case.
//Ikään kuin tehokkaampi tapa ilmaista if-else-lausekkeita.
}
}
}
--------------------
//SwitchStatements.cs, toinen esimerkki:
using UnityEngine;
using System.Collections;
public class SwitchStatements : MonoBehaviour
{
public int selectedSkillLevel;
private int easy = 0, medium = 1, hard = 2;
void Start ()
{
switch(selectedSkillLevel)
{
case 0:
Debug.Log("You selected easy!")
break;
case 1:
Debug.Log("You selected medium!")
break;
case 2:
Debug.Log("You selected hard!")
break;
default:
Debug.Log("Invalid skill level!");
break;
//Jos kok.luvun selectedSkillLevel arvoksi laitetaan 0-2, tehdään caset 0-2,
//muuten tehdään default-case.
}
}
}
--------------------
//Loops.cs:
//For-luuppi:
using UnityEngine;
using System.Collections;
public class Loops : MonoBehaviour
{
public int apples = 100;
void Start ()
{
for(int i = 1; i <= apples; i++)
{
Debug.Log(i);
}
Debug.Log("All the apples found!");
//Kok.luku i:n arvo on alussa 1.
//Niin kauan, kuin i-arvo on pienempi tai yhtä suuri kuin apples-arvo,
//kasvatetaan i-arvoa yhdellä (i++)
//kunnes apples-arvo saavutetaan.
//Tämän jälkeen tulostetaan konsoliin alempi debuglog.
}
}
//Foreach-luuppi, periaatteessa sama kuin for-luuppi:
using UnityEngine;
using System.Collections;
public class Loops : MonoBehaviour
{
public int[] numbers = {5, 6, 7, 8}; //Array
void Start ()
{
foreach(var number in numbers)
{
Debug.Log(number);
}
//Tulostetaan konsoliin kukin numbers-arrayn arvo.
}
}
//While-luuppi:
//Vaarallinen luuppi, koska voidaan päätyä loputtomaan luuppiin ja Unity/kone voi kaatua.
using UnityEngine;
using System.Collections;
public class Loops : MonoBehaviour
{
public int apples = 100;
void Start ()
{
while(apples > 1)
{
Debug.Log(apples);
apples--;
}
Debug.Log(The while loop finished! Yay for no crash!");
//Niin kauan, kuin apples on arvo on suurempi kuin yksi, tulostetaan apples-arvo konsoliin
//ja vähennetään apples-arvoa yhdellä.
// Tämän jälkeen tulostetaan alempi debuglog.
}
}
//Do-luuppi; luuppi tehdään ainakin kerran:
using UnityEngine;
using System.Collections;
public class Loops : MonoBehaviour
{
void Start ()
{
do
{
Debug.Log("Apples: " + apples);
apples--;
}while(apples >= 1);
}
}
Variablet eli muuttujat pitävät sisällään tietoa.
------------------
//variables.cs:
using UnityEngine;
using System.Collections;
public class Variables : MonoBehaviour
//MonoBehav. on yläluokka, jonka alla kaikki muut skriptit ovat.
//Huomaa että määritellyn luokan pitää olla sama kuin skriptitiedoston nimi:
//ko. tapauksessa Variables.
{
public string myName = "Jonathan";
//luodaan myName-niminen "julkinen" tekstimuuttuja ja annetaan sille arvo "Jonathan".
public float speed = 5.5f;
//luodaan speed-niminen julkinen desimaalilukumuuttuja ja annetaan sille arvo 5.5. Huomaa f-kirjain!
private int myAge 22;
//luodaan myAge-niminen "yksityinen" kokonaislukumuuttuja ja annetaan sille arvo 22.
//Koska ko. muuttuja on yksityinen, mikään muu luokka ei voi päästä siihen käsiksi,
//vain tämä skripti.
public bool isCool = true;
//luodaan isCool-niminen "julkinen" totuusarvomuuttuja ja annetaan sille arvoksi "true" eli tosi.
}
------------------
//IfThenStatements.cs:
using UnityEngine;
using System.Collections;
public class IfThenStatements : MonoBehaviour
{
public int myAge = 22;
private bool canDrink = false;
void Start () //Ko. funktio suoritetaan ohjelman käynnistyessä.
{
if (myAge > 17)
{
Debug.Log("Olen yli 17-vuotias.");
canDrink = true; //Muutetaan canDrink-boolean todeksi.
}
else if (myAge < 5)
{
Debug.Log("Olen alle 5-vuotias.");
canDrink = false; //Muutetaan canDrink-boolean epätodeksi.
}
else
{
Debug.Log("Ikäni on 5 ja 17 välillä.");
canDrink = false;
}
//Jos kok.luku myAge on suurempi kuin 17, tehdään if-toiminto,
//mutta jos kok.luku myAge on pienempi kuin 5, tehdään else if toiminto.
//Jos kok.luku on 5 ja 17 välillä, tehdään else-toiminto.
}
void Update () //Ko. funktiota suoritetaan kokoajan ohjelman aikana.
{
if (canDrink == true)
{
Debug.Log("Saat juoda!");
}
else
{
Debug.Log("Olet liian nuori juomaan!");
}
//Jos boolean-arvo canDrink on tosi, tehdään if-toiminto, muuten else-toiminto.
}
}
------------------
//LogicOperators.cs:
using UnityEngine;
using System.Collections;
public class LogicOperators : MonoBehaviour
{
public int a;
public int b;
public int c;
private int average;
void Start ()
{
average = (a + b + c) / 3;
Debug.Log(average);
// Määritetään kok.luku averagen arvo laskemalla a, b ja c yhteen ja jakamalla summa kolmella.
// Tämän jälkeen tulostetaan muuttujan average arvo konsoliin.
}
}
------------------
//SwitchStatements.cs
using UnityEngine;
using System.Collections;
public class SwitchStatements : MonoBehaviour
{
public int a;
public int b;
public int c;
private int average;
void Start ()
{
average = (a + b + c) / 3;
switch(average)
{
case 16:
Debug.Log("Keskiarvo on 16!");
break;
case 10:
Debug.Log("Keskiarvo on 10!");
break;
default:
Debug.Log("Keskiarvo on jokin muu kuin 16 tai 10.");
break;
//Jos kok.luvun average-arvo on 16 tai 10, tehdään kaksi ylintä casea, muuten tehdään default-case.
//Ikään kuin tehokkaampi tapa ilmaista if-else-lausekkeita.
}
}
}
--------------------
//SwitchStatements.cs, toinen esimerkki:
using UnityEngine;
using System.Collections;
public class SwitchStatements : MonoBehaviour
{
public int selectedSkillLevel;
private int easy = 0, medium = 1, hard = 2;
void Start ()
{
switch(selectedSkillLevel)
{
case 0:
Debug.Log("You selected easy!")
break;
case 1:
Debug.Log("You selected medium!")
break;
case 2:
Debug.Log("You selected hard!")
break;
default:
Debug.Log("Invalid skill level!");
break;
//Jos kok.luvun selectedSkillLevel arvoksi laitetaan 0-2, tehdään caset 0-2,
//muuten tehdään default-case.
}
}
}
--------------------
//Loops.cs:
//For-luuppi:
using UnityEngine;
using System.Collections;
public class Loops : MonoBehaviour
{
public int apples = 100;
void Start ()
{
for(int i = 1; i <= apples; i++)
{
Debug.Log(i);
}
Debug.Log("All the apples found!");
//Kok.luku i:n arvo on alussa 1.
//Niin kauan, kuin i-arvo on pienempi tai yhtä suuri kuin apples-arvo,
//kasvatetaan i-arvoa yhdellä (i++)
//kunnes apples-arvo saavutetaan.
//Tämän jälkeen tulostetaan konsoliin alempi debuglog.
}
}
//Foreach-luuppi, periaatteessa sama kuin for-luuppi:
using UnityEngine;
using System.Collections;
public class Loops : MonoBehaviour
{
public int[] numbers = {5, 6, 7, 8}; //Array
void Start ()
{
foreach(var number in numbers)
{
Debug.Log(number);
}
//Tulostetaan konsoliin kukin numbers-arrayn arvo.
}
}
//While-luuppi:
//Vaarallinen luuppi, koska voidaan päätyä loputtomaan luuppiin ja Unity/kone voi kaatua.
using UnityEngine;
using System.Collections;
public class Loops : MonoBehaviour
{
public int apples = 100;
void Start ()
{
while(apples > 1)
{
Debug.Log(apples);
apples--;
}
Debug.Log(The while loop finished! Yay for no crash!");
//Niin kauan, kuin apples on arvo on suurempi kuin yksi, tulostetaan apples-arvo konsoliin
//ja vähennetään apples-arvoa yhdellä.
// Tämän jälkeen tulostetaan alempi debuglog.
}
}
//Do-luuppi; luuppi tehdään ainakin kerran:
using UnityEngine;
using System.Collections;
public class Loops : MonoBehaviour
{
void Start ()
{
do
{
Debug.Log("Apples: " + apples);
apples--;
}while(apples >= 1);
}
}
3ds Max: Simulaatio kappaleiden pudottamiseksi astiaan
- Mallinna proxy-astia, jonne kappaleet pudotetaan.
- Lisää proxy-malliin Static Rigid Body MassFX-työkalupalkista ja laita sen Shapeksi Original.
- Siirrä kuusi pudotettavaa kappaletta astian yläpuolelle. Jos kappale on kovin yksityiskohtainen, tee siitä lowpoly-malli ja linkkaa hipoly-malli siihen. Siirrä siis vain lowpoly-kappaleita.
- Lisää kuhunkin pudotettavaan kappaleeseen Dynamic Rigidbody ja laita niiden Presetiksi Steel tai Concrete.
- Kopioi sekä hipoly että lowpoly-kappaleita astian yläpuolelle haluttu määrä.
- Piilota hipoly-kappaleet ja toista simulaatio MassFX:n palkista. Pysäytä play, kun olet tyytyväinen simulaatioon. Pidä huoli että hi- ja lowpoly-kappaleiden linkkaus säilyy.
- Jos olet tyytyväinen simulaatioon, konvertoi lowpoly-kappaleet Editable Polyksi, jolloin Rigid Body -modifier häviää niistä.
- Lisää proxy-malliin Static Rigid Body MassFX-työkalupalkista ja laita sen Shapeksi Original.
- Siirrä kuusi pudotettavaa kappaletta astian yläpuolelle. Jos kappale on kovin yksityiskohtainen, tee siitä lowpoly-malli ja linkkaa hipoly-malli siihen. Siirrä siis vain lowpoly-kappaleita.
- Lisää kuhunkin pudotettavaan kappaleeseen Dynamic Rigidbody ja laita niiden Presetiksi Steel tai Concrete.
- Kopioi sekä hipoly että lowpoly-kappaleita astian yläpuolelle haluttu määrä.
- Piilota hipoly-kappaleet ja toista simulaatio MassFX:n palkista. Pysäytä play, kun olet tyytyväinen simulaatioon. Pidä huoli että hi- ja lowpoly-kappaleiden linkkaus säilyy.
- Jos olet tyytyväinen simulaatioon, konvertoi lowpoly-kappaleet Editable Polyksi, jolloin Rigid Body -modifier häviää niistä.
Allegorithmicin PBR-ohjeet
https://www.allegorithmic.com/system/files/software/download/build/PBR_Guide_Vol.1.pdf
https://www.allegorithmic.com/system/files/software/download/build/PBR_Guide_Vol.2.pdf
https://www.allegorithmic.com/system/files/software/download/build/PBR_Guide_Vol.2.pdf
3ds Max: Toimiva skripti verteksien normaalien asettamiseksi facen suuntaisesti
http://wiki.polycount.com/wiki/File:GetVertNormalsFromFace_0_2.ms.zip
sunnuntai 7. kesäkuuta 2015
3ds Max: hipoly-mallista normal map lowpoly-malliin
Mallinna hipoly-objekti esim. subdiv-tekniikalla. Hankalat yksityiskohdat voi toteuttaa ns. floating geometry -tekniikalla.
Kun hipoly-malli on valmis, tee siitä kopio samaan paikkaan ja laita se Lowpoly_Bake-nimiselle layerille. Laita hi- ja lowpoly-malleihin erivärinen default-materiaali, jotta ne erottuvat helposti toisistaan.
Mallinna lowpoly-malli esim. niin, että poistat yksityiskohtia hipoly-mallista. Käytä smoothing groupeja teräviin kulmiin.
Maxin Graphite Modeling Toolsien Conform-työkaluilla on helppo saada lowpoly-malli mukailemaan täydellisesti hipoly-mallin pintaa; valitse Draw On -objektiksi Surface ja valitse Surface-objektiksi hipoly-malli. Tämän jälkeen voit muokata mallia Conform- ja Conform Move Brusheilla.
Lowpoly-mallinnuksen jälkeen mappaa lowpoly-malli niin, että kukin smoothing group muodostaa oman uv-palasen käyttämällä UV Editorin Flatten by Smoothing group -painiketta.
Tämän jälkeen käytä UV Editorin relax-työkalua, jolla uv-palaset saadaan suoristettua. Jos suoristus ei onnistu joihinkin palasiin, jaa uv-palanen pienempiin osiin, siirtele verteksejä jotta palasesta tulee selkeämpi tai kokeile käyttää jotain projektiota ja kokeile uudestaan. Myös Peel-toiminnot voivat toimia hyvin.
Kun mappaus on valmis, renderöi normal map hipoly-mallista käyttäen Render to Texturea ja valitsemalla siinä projisoitavaksi malliksi hipoly-malli ja säätämällä projisointi-cagea, jne...
Renderöimisen jälkeen kopioi lowpoly-malli uudelle Lowpoly_Final-nimiselle layerille. Laita kopioidun mallin mateaaliin renderöimäsi normal map ja laita Realistic Materials with Maps päälle, jotta saat normal mapin näkymään reaaliaikaisesti.
Kun hipoly-malli on valmis, tee siitä kopio samaan paikkaan ja laita se Lowpoly_Bake-nimiselle layerille. Laita hi- ja lowpoly-malleihin erivärinen default-materiaali, jotta ne erottuvat helposti toisistaan.
Mallinna lowpoly-malli esim. niin, että poistat yksityiskohtia hipoly-mallista. Käytä smoothing groupeja teräviin kulmiin.
Maxin Graphite Modeling Toolsien Conform-työkaluilla on helppo saada lowpoly-malli mukailemaan täydellisesti hipoly-mallin pintaa; valitse Draw On -objektiksi Surface ja valitse Surface-objektiksi hipoly-malli. Tämän jälkeen voit muokata mallia Conform- ja Conform Move Brusheilla.
Lowpoly-mallinnuksen jälkeen mappaa lowpoly-malli niin, että kukin smoothing group muodostaa oman uv-palasen käyttämällä UV Editorin Flatten by Smoothing group -painiketta.
Tämän jälkeen käytä UV Editorin relax-työkalua, jolla uv-palaset saadaan suoristettua. Jos suoristus ei onnistu joihinkin palasiin, jaa uv-palanen pienempiin osiin, siirtele verteksejä jotta palasesta tulee selkeämpi tai kokeile käyttää jotain projektiota ja kokeile uudestaan. Myös Peel-toiminnot voivat toimia hyvin.
Kun mappaus on valmis, renderöi normal map hipoly-mallista käyttäen Render to Texturea ja valitsemalla siinä projisoitavaksi malliksi hipoly-malli ja säätämällä projisointi-cagea, jne...
Renderöimisen jälkeen kopioi lowpoly-malli uudelle Lowpoly_Final-nimiselle layerille. Laita kopioidun mallin mateaaliin renderöimäsi normal map ja laita Realistic Materials with Maps päälle, jotta saat normal mapin näkymään reaaliaikaisesti.
tiistai 28. huhtikuuta 2015
3ds Max: Pyöristetyt kulmat lowpoly-malleihin (Vray)
Mallinna projisoitava objekti käyttäen smoothing groupeja ja turbosmoothia. Jos EdgesTexiä ei käytetä, laita projisoitavaan objektiin kaksi turbosmoothia, joista alempaan separate by SGs päälle.
Laita projisoitavan mallin Bump-kanavaan VRayEdgesTex voimakkuudella 30 (tosin ei ole kokeiltu miten muut arvot vaikuttavat).
Valitse EdgesTexin Thicknessiksi World units, jolloin paksuus määritetään mittayksiköillä, esim. 0,5 on 0,5 cm.
Kopioi projisoitava objekti samaan paikkaan kuin alkup. objecti. Säilytä smoothing groupit ja poista turbosmooth. Tee siihen uvw-mappaus, niin, että kukin Smoothing group muodostaa oman uv-palasen. Ts. uv-palojen saumat menevät Smoothing groupien rajalla.
Ko. objekti valittuna avaa Render to Texture ja valitse projisoitavaksi objektiksi alkup. objekti. Muista resetoida projisointicage ja työntää sitä Pushilla pois mallin pinnasta.
Lisää Outputiksi VRayBumpNormals, jolloin alkup. objektin bump-kanavasta renderöidään normal map.
Voit tarkastella normal mapin toimivuutta niin, että tee objektista jälleen kopio. Laita siihen Standard material, jonka Bump-kanavaan arvolla 100 laita Normal Bump -mapin kautta renderöity normal map. Valitse myös Views -> Show Materials in Viewport as -> Realistic Materials with Maps jotta saat normal mapin näkymään viewportissa.
Lisäksi voit laittaa ko. materiaalin Reflection-kanavaan heijastettavan hdr-tekstuurin arvolla 100 sekä Specular Color -kanavaan Falloff-mapin tyypillä Fresnel, jotta saat malliin "realistisen" epämetalliheijastuksen.
Jos haluat tehdä Standard-materiaalista metallin, esim. kullan, laita sen diffuse-väri mustaksi ja Specular Coloriin väriksi esim. rgb 230, 170, 91.
Laita projisoitavan mallin Bump-kanavaan VRayEdgesTex voimakkuudella 30 (tosin ei ole kokeiltu miten muut arvot vaikuttavat).
Valitse EdgesTexin Thicknessiksi World units, jolloin paksuus määritetään mittayksiköillä, esim. 0,5 on 0,5 cm.
Kopioi projisoitava objekti samaan paikkaan kuin alkup. objecti. Säilytä smoothing groupit ja poista turbosmooth. Tee siihen uvw-mappaus, niin, että kukin Smoothing group muodostaa oman uv-palasen. Ts. uv-palojen saumat menevät Smoothing groupien rajalla.
Ko. objekti valittuna avaa Render to Texture ja valitse projisoitavaksi objektiksi alkup. objekti. Muista resetoida projisointicage ja työntää sitä Pushilla pois mallin pinnasta.
Lisää Outputiksi VRayBumpNormals, jolloin alkup. objektin bump-kanavasta renderöidään normal map.
Voit tarkastella normal mapin toimivuutta niin, että tee objektista jälleen kopio. Laita siihen Standard material, jonka Bump-kanavaan arvolla 100 laita Normal Bump -mapin kautta renderöity normal map. Valitse myös Views -> Show Materials in Viewport as -> Realistic Materials with Maps jotta saat normal mapin näkymään viewportissa.
Lisäksi voit laittaa ko. materiaalin Reflection-kanavaan heijastettavan hdr-tekstuurin arvolla 100 sekä Specular Color -kanavaan Falloff-mapin tyypillä Fresnel, jotta saat malliin "realistisen" epämetalliheijastuksen.
Jos haluat tehdä Standard-materiaalista metallin, esim. kullan, laita sen diffuse-väri mustaksi ja Specular Coloriin väriksi esim. rgb 230, 170, 91.
keskiviikko 22. huhtikuuta 2015
Photoshop: "värikäs" glow
Kopioi alkuperäinen layer ja tee siihen Threshold niin, että vain kirkkaimmat osat jäävät valkoiseksi.
Laita ko. layeriin Gaussian Blur -filtteri ja blending mode screeniksi ja laske opacity sopivaksi.
Kopioi taas alkup. layer threshold-layerin yläpuolelle ja laita siihen Gaussian Blur samalla arvolla kuin alempaan layeriin (ctrl +f). Laita blending modeksi overlay. Jätä opacity 100:aan.
Linkkaa ko. layer alla olevaan threshold-layeriin. Näin värillinen heijastus näkyy ainoastaan kuvan kirkkaimmissa osissa.
Laita värilliseen blur-layeriin linkattuna adjustment layerinä hue/saturation ja nosta saturation n. 60 - 70:ään.
Laita halutessasi ko. layeriin linkattuna vielä Levels, jos haluat säätää hohdon "aluetta" isommaksi.
Laita ko. layeriin Gaussian Blur -filtteri ja blending mode screeniksi ja laske opacity sopivaksi.
Kopioi taas alkup. layer threshold-layerin yläpuolelle ja laita siihen Gaussian Blur samalla arvolla kuin alempaan layeriin (ctrl +f). Laita blending modeksi overlay. Jätä opacity 100:aan.
Linkkaa ko. layer alla olevaan threshold-layeriin. Näin värillinen heijastus näkyy ainoastaan kuvan kirkkaimmissa osissa.
Laita värilliseen blur-layeriin linkattuna adjustment layerinä hue/saturation ja nosta saturation n. 60 - 70:ään.
Laita halutessasi ko. layeriin linkattuna vielä Levels, jos haluat säätää hohdon "aluetta" isommaksi.
torstai 2. huhtikuuta 2015
3ds Max: verteksien jakaminen tasaisesti edgeloopilla
Avaa Graphite.
Mene Edge-moodiin Editable Polyssä ja valitse haluttu edgeloop.
Avaa Graphiten valikosta Loops-välilehti ja avaa Loop Tools -ikkuna.
Ko. ikkunassa Space-painike jakaa valitun edge loopin verteksit tasaisesti.
Mene Edge-moodiin Editable Polyssä ja valitse haluttu edgeloop.
Avaa Graphiten valikosta Loops-välilehti ja avaa Loop Tools -ikkuna.
Ko. ikkunassa Space-painike jakaa valitun edge loopin verteksit tasaisesti.
tiistai 17. maaliskuuta 2015
Photoshop: "Hipster Fade" -kuvankäsittely
Lisää alkup. kuvan päälle Color Fill -layer ja laita sen sävyksi tummansininen. Säädä huea tarvittaessa, sinertävät sävyt toimivat kuitenkin parhaiten.
Laita ko. layerin blending modeksi exclusion. Näin varjokohdista tulee sinertävät ja valoisista kohdista kellertävät.
Lisää ko. layerin yläpuolelle mustavalkoinen Gradient Map (vas. reunaan musta) ja laita sen Blending modeksi Overlay. Laske opacityä ja filliä tarvittaessa.
Lisää ko. layerin yläpuolelle Levels ja säädä sitä niin, että lasket valkoisen pään Output Levelsiä (alempi slider) ja siirrät ylemmän sliderin keskikohtaa vasemmalle niin, että valotus pysyy "tasapainossa". Näin saadaan varjokohtia kirkkaammaksi sekä valoisia kohtia "tukahdettua".
Lisää ko. layerin yläpuolelle Exposure ja siirrä sen Offset- ja Gamma-slidereitä oikealle niin, että kontrastista ja kylläisyydestä tulee miellyttävämmät; ne värisävyt tuodaan takaisin, jotka aiempi Levels-käsittely vei.
Lisää vielä tarvittaessa Curves ja nosta kuvan kirkkautta. Ylimmäksi voi laittaa vielä ns. Soft Light -metodilla noisea.
Varjopäätä voi vielä sävyttää esim. sinertäväksi tai punertavaksi lisäämällä ylimmäksi Color Balancen ja säätämällä sen varjosävyjä. Huom, Preserve Luminosity pidetään pois päältä, jotta kirkkaat varjopäät säilyvät.
Alkuperäinen inspiraatio: http://iamkristenmarie.com/ ja http://www.thecoffeeshopblog.com/2010/01/coffeeshop-editing-101-loving-navy-blue.html
Laita ko. layerin blending modeksi exclusion. Näin varjokohdista tulee sinertävät ja valoisista kohdista kellertävät.
Lisää ko. layerin yläpuolelle mustavalkoinen Gradient Map (vas. reunaan musta) ja laita sen Blending modeksi Overlay. Laske opacityä ja filliä tarvittaessa.
Lisää ko. layerin yläpuolelle Levels ja säädä sitä niin, että lasket valkoisen pään Output Levelsiä (alempi slider) ja siirrät ylemmän sliderin keskikohtaa vasemmalle niin, että valotus pysyy "tasapainossa". Näin saadaan varjokohtia kirkkaammaksi sekä valoisia kohtia "tukahdettua".
Lisää ko. layerin yläpuolelle Exposure ja siirrä sen Offset- ja Gamma-slidereitä oikealle niin, että kontrastista ja kylläisyydestä tulee miellyttävämmät; ne värisävyt tuodaan takaisin, jotka aiempi Levels-käsittely vei.
Lisää vielä tarvittaessa Curves ja nosta kuvan kirkkautta. Ylimmäksi voi laittaa vielä ns. Soft Light -metodilla noisea.
Varjopäätä voi vielä sävyttää esim. sinertäväksi tai punertavaksi lisäämällä ylimmäksi Color Balancen ja säätämällä sen varjosävyjä. Huom, Preserve Luminosity pidetään pois päältä, jotta kirkkaat varjopäät säilyvät.
Alkuperäinen inspiraatio: http://iamkristenmarie.com/ ja http://www.thecoffeeshopblog.com/2010/01/coffeeshop-editing-101-loving-navy-blue.html
3ds Max: Tyynyn, tms. orgaanisen kangasobjektin tekeminen
Mallinna tyynyn muoto karkeasti esim. box-primitiivistä.
Tee Rectancle-muotoinen spline, joka on hieman isompi kuin box-objekti. Muokkaa esim. pyöristämällä tarvittaessa splinen kulmia.
Kopioi spline "objektin sisällä" niin, että ne pysyvät samalla tasolla ja koostuvat yhdestä spline-objektista. Katso, että toinen rectangleista on box-objektin yläpuolella.
Lisää Garment Maker -modifier spline-objektiin ja aseta tiheys sopivaksi.
Siirrä toinen rectangleista box-objektin alapuolelle ja käännä sitä 180-astetta.
Spline- ja box-objekti valittuna lisää Cloth-modifier.
Ota Gravity pois päältä, laita Self Collision päälle arvolla 1, kuten myös Check Intersections, Solid Collisions, use Sewing Springs ja Show Sewing Springs.
Avaa Cloth-modifierin Object Properties ja aseta box-objekti Collision-objektiksi ja sen Depth- and Offset-arvoiksi 0.25.
Aseta spline-objekti Clothiksi ja valitse presetiksi esim. Cotton. Paina Simulate Local, jolloin spline-objektit sovitetaan box-objektin ympärille.
Konvertoi splinet Editable Polyksi ja valitse borderit. Muunna valinta vertekseiksi ja weldaa tyynyn sivut saumoistaan yhteen.
Alkup. lähde: http://www.3dartistonline.com/news/2012/09/tutorial-fabric-for-furniture/.
Tee Rectancle-muotoinen spline, joka on hieman isompi kuin box-objekti. Muokkaa esim. pyöristämällä tarvittaessa splinen kulmia.
Kopioi spline "objektin sisällä" niin, että ne pysyvät samalla tasolla ja koostuvat yhdestä spline-objektista. Katso, että toinen rectangleista on box-objektin yläpuolella.
Lisää Garment Maker -modifier spline-objektiin ja aseta tiheys sopivaksi.
Siirrä toinen rectangleista box-objektin alapuolelle ja käännä sitä 180-astetta.
Spline- ja box-objekti valittuna lisää Cloth-modifier.
Ota Gravity pois päältä, laita Self Collision päälle arvolla 1, kuten myös Check Intersections, Solid Collisions, use Sewing Springs ja Show Sewing Springs.
Avaa Cloth-modifierin Object Properties ja aseta box-objekti Collision-objektiksi ja sen Depth- and Offset-arvoiksi 0.25.
Aseta spline-objekti Clothiksi ja valitse presetiksi esim. Cotton. Paina Simulate Local, jolloin spline-objektit sovitetaan box-objektin ympärille.
Konvertoi splinet Editable Polyksi ja valitse borderit. Muunna valinta vertekseiksi ja weldaa tyynyn sivut saumoistaan yhteen.
Alkup. lähde: http://www.3dartistonline.com/news/2012/09/tutorial-fabric-for-furniture/.
keskiviikko 11. maaliskuuta 2015
Photoshop: Zdepth-passilla tehdyn DOF:in korjaaminen
Tee Lens blur zdepth-maskin avulla. Spottaa ongelmakohdat.
Siirrä zdepth maskista tavalliseksi layeriksi ja laita Levels-adjustment layer ja liikuta slidereja niin, että kontrasti on mahd. iso, ja että halutun objektin siluetti jää näkyviin mustaa vasten.
Tee näkymästä maski uudelle layerille ja valitse se. Paina Select -> Modify -> Border, jotta siluetin reuna valitaan.
Laita tämän jälkeen jo tehtyyn ZDepthiin border valittuna lens blur. Huom! Sourcena tällä kertaa None. Säädä radius sopivaksi.
Siirrä zdepth maskista tavalliseksi layeriksi ja laita Levels-adjustment layer ja liikuta slidereja niin, että kontrasti on mahd. iso, ja että halutun objektin siluetti jää näkyviin mustaa vasten.
Tee näkymästä maski uudelle layerille ja valitse se. Paina Select -> Modify -> Border, jotta siluetin reuna valitaan.
Laita tämän jälkeen jo tehtyyn ZDepthiin border valittuna lens blur. Huom! Sourcena tällä kertaa None. Säädä radius sopivaksi.
3ds Max: Sauman poistaminen uvw-mapeista
Tee malli ja tee sille uniikki uvw-mappaus kanavalle 1.
Laita objektille pohjatekstuuri.
Lisää objektiin uvw-unwrap, laita kanavaksi 2 ja muuta sen mappausta niin että haitalliset saumat poistuvat.
Esim. jaa lieriöobjektin sivun uvw-saareke kahtia ja "vaihda niiden paikkaa" niin, että lieriön alkuperäisen mappauksen sivun uvw-saarekkeen reunat ovat uudessa mappauksessa keskellä kiinni toisissaan.
Renderöi Render to Texturella kanavan 2 uvw-mappauksesta Complete Map, jolloin baketetaan 1. kanavan mukaan mapattu tekstuuri 2. kanavan mappaukseen. Näin saadaan mappauksesta syntynyt sauma selvästi näkyviin uvw-palasen keskelle.
Poista sauma Photarissa.
Laita objektille pohjatekstuuri.
Lisää objektiin uvw-unwrap, laita kanavaksi 2 ja muuta sen mappausta niin että haitalliset saumat poistuvat.
Esim. jaa lieriöobjektin sivun uvw-saareke kahtia ja "vaihda niiden paikkaa" niin, että lieriön alkuperäisen mappauksen sivun uvw-saarekkeen reunat ovat uudessa mappauksessa keskellä kiinni toisissaan.
Renderöi Render to Texturella kanavan 2 uvw-mappauksesta Complete Map, jolloin baketetaan 1. kanavan mukaan mapattu tekstuuri 2. kanavan mappaukseen. Näin saadaan mappauksesta syntynyt sauma selvästi näkyviin uvw-palasen keskelle.
Poista sauma Photarissa.
ZBrush: Työkaluja ja -tapoja hardsurface-mallinnukseen
https://polycount.com/discussion/168610/3ds-max-zbrush-proboolean-dynamesh-hardsurface-workflow-tutorial
Tehdään Maxissa lowpoly-mesh smoothing groupien avulla. Turbosmoothin iter. 2 ja Separate by SG:n voi katsoa miten malli pehmenee. Päälle voi laittaa vielä toisen Turbosmoothin ilman separatea, jotta nähdään miten CreaseLvl tulee toimimaan. Laita pivot origoon.
Gozilla siirrettäessä Maxin yksiköiden tulee olla 1 unit = 1 metri, jotta skaala on Zbrushissakin järkevä.
Viedään malli Zbrushiin, tehdään PG by normals ja Crease PG, jotta saadaan "smoothing groupit pidettyä" kun divide tehdään. Säädä myös creaselvl?
Divide muutaman kerran, jotta lowres-mallin polygonirajat häviävät.
Laitetaan Dynamesh päälle. Dynamesh master: http://www.zbrushcentral.com/showthread.php?177194-DynaMesh-Master!-unofficial-Information-Installation.
Tehdään Maxissa boolean-objektit ja viedään ne gozilla zbrushiin.
Valitaan Tool-ikkunasta alkup. objekti ja lisätään boolean-objekti siihen panamalla subtool-valikosta Append ja valitsemalla valikosta boolean-mesh.
Valitaan subtool-listasta ko. objektin boolean-toiminto; joko poistettava tai yhdistettävä.
Valitaan alkup. subtool ja painetaan merge down, jolloin subtool-listassa ko. objektin alapuolella olevat objektit attachoidaan siihen.
Laitetaan dynamesh päälle, jolloin tehdään samalla boolean-operaatiot.
-------------------------
Sitten tehdään Maxissa boolean-objektit.
Zbrushissa asetetaan ne eri subtooleiksi split to parts -toiminnon avulla.
-Nuolinäpp. voi selata subtool-listan objekteja. Kun sama tehdään ctrl pohjassa, siirretään objektia subtool-listassa. Alt + lmb = valitsee eri subtoolin.
Kun halutaan, että subtool leikkaa osia pois, asetetaan se subtool-listassa sub-objektiksi.
Ctrl + E = Merge down = yhdistää valitun subtoolin sekä subtool-listassa sen alapuolella olevan yhdeksi subtooliksi.
Sitten dynamesh uudestaan, jolloin subtoolin avulla leikataan osa pois.
--------------------------
Jos boolean-objekti halutaan tehdä Zbrushissa, Subtool -> Append, jolloin voidaan lisätä skeneen Zbrushin primitiivejä.
Jälleen laitetaan se subtr. objektiksi jos sen halutaan poistavan osia vars. objektista, merge down ja dynamesh.
--------------------------
Kun tehdään boolean-operaatioita, poistetusta tai lisätystä pinnasta luodaan aina uusi polygroup.
Esim. kun pyöreän muotoisen reiän sisäpinta on oma polygroupinsa, sen reunaan helppo tehdä chamfer:
Laitetaan näkyviin pelkästään reiän sisäpinta ja klikataan Set Pivot pointia oik. reunan viewportin työkaluista, jolloin pivot siirtyy näkyvissä olevien polygonien keskikohtaan.
Sitten laitetaan päälle radial symmetry, jolloin haluttu toiminto tehdään joka puolelle ympyrän sisäpintaa, esim. ensin smoothilla tehdään pehmeää reunaa terävämmäksi ja hPolishilla tehdään chamfer.
Muista laittaa pivot takaisin!
--------------------------
Brusheista Planar flatten ja Smooth sopivat parhaiten dynamesh-siivoamiseen.
Mallista saattaa tulla sotkuinen kun dynamesh tehdään uudestaan ja uudestaan. Sen korjaamiseksi on viisasta ottaa meshista kopio varhaisessa vaiheessa (Ctrl + shift + D = Dublicate subtool). Kun meshiä halutaan korjata, laitetaan kumpikin subtool näkyviin, maskataan haluttu alue ja klikataan Subtool -> Project All, jolloin työstettävä meshi muutetaan alkuperäistä vastaavaksi.
--------------------------
Meshin leikkauksien kulmien osa voi olla liian teräviä. Niitä voi pehmentää seur. tavalla:
Tehdään ensin mallista morph target: Morph target -> StoreMT, jolloin tallennetaan mallin senhetkinen tila.
Tämän jälkeen Deformations -> Polish, joka pyöristää teräviä kulmia.
Koska kaikkien yks.kohtien ei kuitenkaan haluta pyöristää, ne saa takaisin teräviksi Morph brushilla.
--------------------------
Chamfer-bevelin tekeminen:
Dynamesh-malliin tehdään groupsloops, loops-määrällä 1. Tämän jälkeen Polish By Features tai Smooth groups -brushilla tasoitetaan pinnat.
Tai, piirretään maski, tehdään siitä polygroup, laitetaan Mask by Polygroups arvoon 100 ja tasoitetaan pinta Smooth Strongerilla. Trim Dynamicilla voi tasoittaa pintaa ja tämän jälkeen smoothata, jos pelkkä smooth ei onnistu. Jotta saadaan polygroupin reunasta sulava, aisoleitataan polygroup, kasvatetaan valintaa Grow-painikkeella kerran, painetaan ctrl + w ja smooth groupsilla tasoitetaan reunat. Tai Polish by Features.
Uran tekeminen pintaan:
Piirretään maski, tehdään siitä polygroup, aisoleitataan se ja tehdään groupsLoops 1:llä loopilla.
Koska groupsloopsin leveys on niin pieni, eikä sitä voi säätää, aisoleitataan se ja kasvatetaan valintaa haluttu määrä Grow-painikkeella. Tehdään tästä polygroup ja tasoitetaan reunat Smooth groupilla.
Sitten tehdään extract joko panel loopsilla tai transpose toolilla.
--------------------------
KÄTEVIÄ TOIMINTOJA:
Subtool -> Extract: tekee maskatusta osasta uuden subtoolin aiemman subtoolin pinnalle. Ensin extractoitu objekti on esikatselutilassa ja se pitää hyväksyä Accept-painikkeella.
Numeronäpp. 1 = toistaa edellisen toiminnon.
Alphan tailaaminen:
Esim. pultin kierteet on mahdollista saada tasaisesti tekemällä ensin plane, jonka keskilinja nousee terävästi ylös, sitten Grab docilla tehdään siitä alpha. Sitten alpha-valikon modify-kohdasta nostetaan h-tile-arvoa, jotta alphatekstuuri toistuu. Sitten ko. alpha valittuna piirretään maski ruuvin tankoon ja deform -> inflatilla tehdään kierteet.
Planar deep cut ja brush-valikon depth keskiviivan alle: Voi kaivertaa ikään kuin kerroksen pinnasta pois tai tehdä chamferin. Ei löydy oletuksena, jolloin brush-valikosta klikataan Load ja etsitään sieltä.
Pathin piirtäminen ja brush-vedon meneminen ainoastaan sitä pitkin:
Stroke-valikon Lazy mouse päälle, Backtrack päälle, valitaan Path ja Snap to Track päälle, jolloin piirretään polku, jota pitkin brushin veto kulkee.
Lightbox -> Smooth -> Smooth groups -brush: Kun tehdään maskista uusi polygroup, sen reuna on pikselöitynyt koska se mukailee topologiaa. Ko. brushilla reunasta saadaan kuitenkin sulava. Myös muita smooth brusheja on!
IMM brush (Insert Multimesh): Voi lisätä meshin subtoolin pintaan. Sitten kun kaksi kertaa raahaa lmb:tä tyhjällä kanvaksella, imm-mesh liitetään subtooliin.
Useamman kuin yhden polygroupin aisoleittaaminen (SelectRect) pitää olla valittuna:
1. Pidä alhaalla CTRL+SHIFT ja valitse haluamasi PG.
2. Tee valinnasta käänteinen pitämällä CTRL+SHIFT alhaalla ja raahaamalla lmb:tä tyhjään kohtaan.
3. Pidä alhaalla CTRL+SHIFT ja valitse muut PG:t jotka haluat sisällyttää valintaan.
4. Tee valinnasta käänteinen pitämällä CTRL+SHIFT alhaalla ja raahaamalla lmb:tä tyhjään kohtaan.
Polygroupien pikamaskaus:
Valitaan Move-työkalu (W) ja painetaan Ctrl + shift + lmb halutun polygroupin päällä. Näin muut polygroupit maskataan.
Slice Curvella piirrettäessä shift-pohjassa snapataan asteisiin. Alt kerran tekee pyöreän mutkan ja kahdesti terävän, sekä välilyönti pohjassa voi siirtää käyrää.
Brush -> Clip Brush Modifiers -> BRadius -painike päällä Slice Curvella tehty viiva muodostaa ikäänkuin polygroup-kaistan, jonka paksuutta säädetään brushin koolla.
Extrude transpose-brushilla: valitaan Move, ja kun klikataan mallin pintaa, Transp. line asetetaan pinnan normaalin suuntaisesti, jolloin liikuttaessa keskimmäistä pallukkaa ctrl + shift pohjassa tehdään extrude. Skaala-työkalulla keskimmäistä pallukkaa siirrettäessä ctrl pohjassa voi tehdä insetin.
Extrude Panel loopsilla ylös: Loops 1, Double pois päältä, Thicknessillä määritetään extruden korkeus ja Elevation 100. Kun halutaan extrude sisään, niin painetaan Inner päälle. Bevel-arvolla painikkeella voi tehdä samalla inset-operaation.
Trim Front brush = tasoittaa mallin pintaan kamerakulman perusteella. Ikään kuin Slice curve kohtisuoraan.
Layer brush = tekee kerroksen mallin pintaan.
--------------------------
MUUTA KÄTEVYYTTÄ:
Combo Sliders: mm. extract tehty helpoksi: http://youtu.be/tJ9BvIdyjIE
Tehdään Maxissa lowpoly-mesh smoothing groupien avulla. Turbosmoothin iter. 2 ja Separate by SG:n voi katsoa miten malli pehmenee. Päälle voi laittaa vielä toisen Turbosmoothin ilman separatea, jotta nähdään miten CreaseLvl tulee toimimaan. Laita pivot origoon.
Gozilla siirrettäessä Maxin yksiköiden tulee olla 1 unit = 1 metri, jotta skaala on Zbrushissakin järkevä.
Viedään malli Zbrushiin, tehdään PG by normals ja Crease PG, jotta saadaan "smoothing groupit pidettyä" kun divide tehdään. Säädä myös creaselvl?
Divide muutaman kerran, jotta lowres-mallin polygonirajat häviävät.
Laitetaan Dynamesh päälle. Dynamesh master: http://www.zbrushcentral.com/showthread.php?177194-DynaMesh-Master!-unofficial-Information-Installation.
Tehdään Maxissa boolean-objektit ja viedään ne gozilla zbrushiin.
Valitaan Tool-ikkunasta alkup. objekti ja lisätään boolean-objekti siihen panamalla subtool-valikosta Append ja valitsemalla valikosta boolean-mesh.
Valitaan subtool-listasta ko. objektin boolean-toiminto; joko poistettava tai yhdistettävä.
Valitaan alkup. subtool ja painetaan merge down, jolloin subtool-listassa ko. objektin alapuolella olevat objektit attachoidaan siihen.
Laitetaan dynamesh päälle, jolloin tehdään samalla boolean-operaatiot.
-------------------------
Sitten tehdään Maxissa boolean-objektit.
Zbrushissa asetetaan ne eri subtooleiksi split to parts -toiminnon avulla.
-Nuolinäpp. voi selata subtool-listan objekteja. Kun sama tehdään ctrl pohjassa, siirretään objektia subtool-listassa. Alt + lmb = valitsee eri subtoolin.
Kun halutaan, että subtool leikkaa osia pois, asetetaan se subtool-listassa sub-objektiksi.
Ctrl + E = Merge down = yhdistää valitun subtoolin sekä subtool-listassa sen alapuolella olevan yhdeksi subtooliksi.
Sitten dynamesh uudestaan, jolloin subtoolin avulla leikataan osa pois.
--------------------------
Jos boolean-objekti halutaan tehdä Zbrushissa, Subtool -> Append, jolloin voidaan lisätä skeneen Zbrushin primitiivejä.
Jälleen laitetaan se subtr. objektiksi jos sen halutaan poistavan osia vars. objektista, merge down ja dynamesh.
--------------------------
Kun tehdään boolean-operaatioita, poistetusta tai lisätystä pinnasta luodaan aina uusi polygroup.
Esim. kun pyöreän muotoisen reiän sisäpinta on oma polygroupinsa, sen reunaan helppo tehdä chamfer:
Laitetaan näkyviin pelkästään reiän sisäpinta ja klikataan Set Pivot pointia oik. reunan viewportin työkaluista, jolloin pivot siirtyy näkyvissä olevien polygonien keskikohtaan.
Sitten laitetaan päälle radial symmetry, jolloin haluttu toiminto tehdään joka puolelle ympyrän sisäpintaa, esim. ensin smoothilla tehdään pehmeää reunaa terävämmäksi ja hPolishilla tehdään chamfer.
Muista laittaa pivot takaisin!
--------------------------
Brusheista Planar flatten ja Smooth sopivat parhaiten dynamesh-siivoamiseen.
Mallista saattaa tulla sotkuinen kun dynamesh tehdään uudestaan ja uudestaan. Sen korjaamiseksi on viisasta ottaa meshista kopio varhaisessa vaiheessa (Ctrl + shift + D = Dublicate subtool). Kun meshiä halutaan korjata, laitetaan kumpikin subtool näkyviin, maskataan haluttu alue ja klikataan Subtool -> Project All, jolloin työstettävä meshi muutetaan alkuperäistä vastaavaksi.
--------------------------
Meshin leikkauksien kulmien osa voi olla liian teräviä. Niitä voi pehmentää seur. tavalla:
Tehdään ensin mallista morph target: Morph target -> StoreMT, jolloin tallennetaan mallin senhetkinen tila.
Tämän jälkeen Deformations -> Polish, joka pyöristää teräviä kulmia.
Koska kaikkien yks.kohtien ei kuitenkaan haluta pyöristää, ne saa takaisin teräviksi Morph brushilla.
--------------------------
Chamfer-bevelin tekeminen:
Dynamesh-malliin tehdään groupsloops, loops-määrällä 1. Tämän jälkeen Polish By Features tai Smooth groups -brushilla tasoitetaan pinnat.
Tai, piirretään maski, tehdään siitä polygroup, laitetaan Mask by Polygroups arvoon 100 ja tasoitetaan pinta Smooth Strongerilla. Trim Dynamicilla voi tasoittaa pintaa ja tämän jälkeen smoothata, jos pelkkä smooth ei onnistu. Jotta saadaan polygroupin reunasta sulava, aisoleitataan polygroup, kasvatetaan valintaa Grow-painikkeella kerran, painetaan ctrl + w ja smooth groupsilla tasoitetaan reunat. Tai Polish by Features.
Uran tekeminen pintaan:
Piirretään maski, tehdään siitä polygroup, aisoleitataan se ja tehdään groupsLoops 1:llä loopilla.
Koska groupsloopsin leveys on niin pieni, eikä sitä voi säätää, aisoleitataan se ja kasvatetaan valintaa haluttu määrä Grow-painikkeella. Tehdään tästä polygroup ja tasoitetaan reunat Smooth groupilla.
Sitten tehdään extract joko panel loopsilla tai transpose toolilla.
--------------------------
KÄTEVIÄ TOIMINTOJA:
Subtool -> Extract: tekee maskatusta osasta uuden subtoolin aiemman subtoolin pinnalle. Ensin extractoitu objekti on esikatselutilassa ja se pitää hyväksyä Accept-painikkeella.
Numeronäpp. 1 = toistaa edellisen toiminnon.
Alphan tailaaminen:
Esim. pultin kierteet on mahdollista saada tasaisesti tekemällä ensin plane, jonka keskilinja nousee terävästi ylös, sitten Grab docilla tehdään siitä alpha. Sitten alpha-valikon modify-kohdasta nostetaan h-tile-arvoa, jotta alphatekstuuri toistuu. Sitten ko. alpha valittuna piirretään maski ruuvin tankoon ja deform -> inflatilla tehdään kierteet.
Planar deep cut ja brush-valikon depth keskiviivan alle: Voi kaivertaa ikään kuin kerroksen pinnasta pois tai tehdä chamferin. Ei löydy oletuksena, jolloin brush-valikosta klikataan Load ja etsitään sieltä.
Pathin piirtäminen ja brush-vedon meneminen ainoastaan sitä pitkin:
Stroke-valikon Lazy mouse päälle, Backtrack päälle, valitaan Path ja Snap to Track päälle, jolloin piirretään polku, jota pitkin brushin veto kulkee.
Lightbox -> Smooth -> Smooth groups -brush: Kun tehdään maskista uusi polygroup, sen reuna on pikselöitynyt koska se mukailee topologiaa. Ko. brushilla reunasta saadaan kuitenkin sulava. Myös muita smooth brusheja on!
IMM brush (Insert Multimesh): Voi lisätä meshin subtoolin pintaan. Sitten kun kaksi kertaa raahaa lmb:tä tyhjällä kanvaksella, imm-mesh liitetään subtooliin.
Useamman kuin yhden polygroupin aisoleittaaminen (SelectRect) pitää olla valittuna:
1. Pidä alhaalla CTRL+SHIFT ja valitse haluamasi PG.
2. Tee valinnasta käänteinen pitämällä CTRL+SHIFT alhaalla ja raahaamalla lmb:tä tyhjään kohtaan.
3. Pidä alhaalla CTRL+SHIFT ja valitse muut PG:t jotka haluat sisällyttää valintaan.
4. Tee valinnasta käänteinen pitämällä CTRL+SHIFT alhaalla ja raahaamalla lmb:tä tyhjään kohtaan.
Polygroupien pikamaskaus:
Valitaan Move-työkalu (W) ja painetaan Ctrl + shift + lmb halutun polygroupin päällä. Näin muut polygroupit maskataan.
Slice Curvella piirrettäessä shift-pohjassa snapataan asteisiin. Alt kerran tekee pyöreän mutkan ja kahdesti terävän, sekä välilyönti pohjassa voi siirtää käyrää.
Brush -> Clip Brush Modifiers -> BRadius -painike päällä Slice Curvella tehty viiva muodostaa ikäänkuin polygroup-kaistan, jonka paksuutta säädetään brushin koolla.
Extrude transpose-brushilla: valitaan Move, ja kun klikataan mallin pintaa, Transp. line asetetaan pinnan normaalin suuntaisesti, jolloin liikuttaessa keskimmäistä pallukkaa ctrl + shift pohjassa tehdään extrude. Skaala-työkalulla keskimmäistä pallukkaa siirrettäessä ctrl pohjassa voi tehdä insetin.
Extrude Panel loopsilla ylös: Loops 1, Double pois päältä, Thicknessillä määritetään extruden korkeus ja Elevation 100. Kun halutaan extrude sisään, niin painetaan Inner päälle. Bevel-arvolla painikkeella voi tehdä samalla inset-operaation.
Trim Front brush = tasoittaa mallin pintaan kamerakulman perusteella. Ikään kuin Slice curve kohtisuoraan.
Layer brush = tekee kerroksen mallin pintaan.
--------------------------
MUUTA KÄTEVYYTTÄ:
Combo Sliders: mm. extract tehty helpoksi: http://youtu.be/tJ9BvIdyjIE
Tilaa:
Blogitekstit (Atom)