Topic: [Cycles] Hoe maak ik een image_texture based emission shader ?  (gelezen 4433 keer)


superjamie

« Gepost op: 11 april 2016, 10:22:49 am »
Hoi,

Ik ben momenteel aan het oefenen met blender cycles render, maar ik probeerde
dus een image_texture gebaseerde emission shader te creeren (om te oefenen),
maar als ik dat doe, word de emission (het licht gloei) meestal de licht uitstralende
textuur van de emission map zelf (de zwart wit map om emission te creeëren), i.p.v.
de diffuse map (zoals het hoort). Ik had shaders gecreeërd met een diffuse map, een
normal map en een image_texture gebaseerde emission map (wat dus niet goed
lukte).

Sorry dat ik geen plaatje hier van heb, ik weet niet hoe ik een plaatje kan maken van
hoe ik dat doe in blender cycles render...

Heeft iemand enig idee wat ik fout doe ?... of kan iemand uitleggen hoe ik via blender
een plaatje kan maken (geen plaatje van alleen de render, maar van wat ik doe in
blender cycles render), en vervolgens kan posten op deze topic, zodat ik kan laten zien
hoe ik dat doe... en iemand misschien duidelijker kan uitleggen wat ik fout doe ?, het
zal dan ook wel even duren voordat ik weer kan oefenen en een plaatje kan maken en
dan kan laten zien, ik ga met de woning ongeveer een midweek op vakantie... dus dat
zal nog wel een paar dagen duren voordat ik het kan laten zien...

Maar alvast bedankt,
Groetjes Jamie.

« Laatst bewerkt op: 20 april 2016, 19:28:33 pm door superjamie »

Offline Nick Van den Broeck

  • Member
  • *
  • Berichten: 216
    • Bekijk profiel
    • Blender Education
« Reactie #1 Gepost op: 12 april 2016, 12:19:11 pm »
Dag superjamie,

Ik ben eigenlijk helemaal niet mee met wat je nu juist wilt bereiken. Maar om je verder te helpen hebben we net iets meer informatie nodig en je vraagt ook hoe je die kan geven. Dat kan ik wel zeggen.

Wat het beste en makkelijkste werkt zijn screenshots. Die neem je eenvoudig met de printscreen knop op je toetsenbord (en nadien via paint of zo plakken en opslaan), of op recentere windows versies met het knipprogramma. Om die dan hier te tonen met je in twee stappen te werk gaan: 1) je afbeelding met ergens online terecht komen 2) je moet ze daarna hier in een post plaatsen.
Voor 1) gebruiken de meesten hier http://postimage.org/ Hier kan je eenvoudig een afbeelding uploaden.
Voor 2) moet je dan de link die je nadien krijgt voor die foto hier plakken. Druk daarvoor eerst op het knopje drukken. Dit zal [ img ] en [ /img ] tags plaatsen in je tekst. Plak de link tussen die tags en de afbeelding zal worden getoond. Om dit te controleren kan je onderaan je bericht op 'Bekijken' drukken alvorens je het bericht instuurt.



Kwestie van emission shaders: Zo'n shader heeft 2 inputs: kleur en sterkte.

- Link je een afbeelding (met heel het UV gebeuren zodat Blender weet waar hij welk onderdeel moet plaatsen, net zoals bij diffusion maps) met de kleur, dan bepaalt dit de kleur op het object. Zet je die naar perfect zwart, dan zal op die plekken geen licht worden uitgestuurd. Is er wel een kleur, dan straalt er vanuit dat punt op het object licht van die kleur, met de sterkte van de andere parameter in de shader. Pas dus op, dit wil zeggen dat je op een afstandje van je object licht vanuit meerdere punten krijgt. Je gaat dus nooit je afbeelding zien geprojecteerd worden op deze wijze. (ps: als je de sterkte te hoog zet, zullen bijna alle kleuren wit licht geven, ze zijn dan te fel om de kleur te onderscheiden.)

- De sterkte is ook best logisch. Steek je daar de afbeelding in, dan zal de kleur overal hetzelfde zijn, maar stralen bepaalde delen meer kleur uit dan andere delen.

De vraag is nu: wat wil je bereiken? Want voor vele situaties moet je eigenlijk geen afbeelding in de emission shader steken, maar moet je de afbeelding gebruiken als een factor in een add of mix shader.
Bijvoorbeeld: wil je een robot maken met een soort van licht strepen langsheen zijn lichaam, en heb je alles in 1 materiaal gestoken, dan ga je een afbeelding maken die wit ziet waar de lichtstrepen zijn en zwart elders. Je maakt dan groepen van shaders aan: 1) het licht en 2) het metaal van de robot. Die combineer je via een mix shader en de afbeelding gaat dan in de mix factor input. Waar de afbeelding zwart ziet wordt het metaal getoond, waar het wit ziet het licht.
Voorbeeld 2: Iets wat ook vaak voorkomt is dat je een afbeelding wordt projecteren, of bijvoorbeeld een schaduwenpatroon wilt namaken. In zo'n geval is het vaak nog het makkelijkst om het fysieke systeem na te doen: een gewone lamp en een tweede vlak die je met de afbeelding transparant of niet maakt. Net zoals een echte projector werkt.

Hopelijk helpt deze uitleg een beetje.
Wat je ook altijd kan doen is online een voorbeeld vinden van wat je wilt bereiken en dat tonen, dan weten we waar je naartoe wilt. Combineer dat met wat je al hebt en je gaat heel gedetailleerd en specifieke hulp krijgen. Hier zitten en hele hoop knappe Blenderkoppen.

Offline Ruud

  • Member
  • *
  • Berichten: 1,860
    • Bekijk profiel
« Reactie #2 Gepost op: 12 april 2016, 18:54:34 pm »
Als je de texture met UV hebt gedaan moet je een extra node gebruiken te vinden in input  " texture coordinate " en verbind dan de UV met de vector van je image node dan heb je de texture op de juiste plaats staan.

superjamie

« Reactie #3 Gepost op: 20 april 2016, 19:40:23 pm »
Ik heb net geprobeerd een emission (belichtings) shader te creeëren, maar dat lukte niet goed.
Als ik de hoeveelheid licht uit zet, word de textuur in het midden zwart, dit komt door de
emission map. Zie hier het verschil maar eens:


De hoeveelheid emission (licht) aan:



De hoeveelheid emission (licht) uit (hier zie je dat de diffuse map zwart word,
de diffuse textuur hoort niet zwart te zijn:




Wat kan ik er aan doen, om er voor te zorgen dat de diffuse textuur gewoon normaal
word als de emission uit staat (op 0), of weet iemand wat ik fout doe... alvast bedankt,

Groetjes Jamie.

Offline Ezra

  • Member
  • *
  • Berichten: 206
    • Bekijk profiel
« Reactie #4 Gepost op: 20 april 2016, 19:47:16 pm »
Ik gok er op dat je te weinig licht hebt. Bedenk maar zo, een foto is altijd donker als je hem in het donker bekijkt. Voeg eens een sun lamp toe aan je scene, en kijk of het helpt.

Offline koos2

  • Member
  • *
  • Berichten: 2,053
    • Bekijk profiel
« Reactie #5 Gepost op: 21 april 2016, 08:07:50 am »
Is dit niet typisch een afbeelding die je shadeless zou moeten doen? Op die manier is de afbeelding overal het zelfde "belicht".

superjamie

« Reactie #6 Gepost op: 21 april 2016, 13:42:36 pm »
Ik gok er op dat je te weinig licht hebt. Bedenk maar zo, een foto is altijd donker als je hem in het donker bekijkt. Voeg eens een sun lamp toe aan je scene, en kijk of het helpt.

Sorry, ik heb het gisteren avond voordat ik ging slapen geprobeerd, maar dat hielp niet,
ik denk ook niet dat het uitmaakt. De textuur hoort (ook als hij geen licht geeft) gewoon
overal kleur (diffuse) te hebben, al geeft hij geen licht... in het echt zie je toch ook
gewoon de kleuren van een glow-in-the-dark ster als de zon licht daar niet in opgeslagen
is, een glow-in-the-dark ster geeft in het echt ook pas licht als de zon heeft geschenen,
maar al geeft de glow-in-the-dark ster geen licht (al houd je em buiten, smiddags overdag),
zie je em toch ook gewoon geel (of anders gezegt de gewone kleur van de die ster) ?,
weet iemand hoe ik het probleem kan oplossen, alvast bedankt...

Groetjes Jamie.
« Laatst bewerkt op: 21 april 2016, 14:58:08 pm door superjamie »

Offline Nick Van den Broeck

  • Member
  • *
  • Berichten: 216
    • Bekijk profiel
    • Blender Education
« Reactie #7 Gepost op: 22 april 2016, 13:27:16 pm »
Ok, ik doe een poging om te helpen, maar ik ben nog altijd niet mee met wat je wilt bereiken. Dus dan maar meerdere opties:

1) Een shader die licht uitstraalt volgens de kleuren van een foto en als je de intensiteit naar 0 zet, nog altijd de foto toont. Dit kan je doen door een diffuse en emission shader te combineren.

Hierbij gebruik ik de 'add' shader om ze te combineren. Het resultaat is een diffuse oppervlakte, waar een emission bij wordt opgeteld. als je de sterkte van de emission dan op 0 zet, dan heb je enkel nog de diffuse.
alternatief is ze te combineren via een mix shader, maar dan moet je met de factor van de mix gaan spelen om te wisselen tussen diffuse en emission.

2) Een shader die een foto toont ongeacht de belichting = shadeless material. Dit soort materialen wordt vaak gebruikt voor projectoren of billboards. Ze mogen geen invloed op de omgeving hebben, maar moeten wel steeds hun afbeelding tonen, ongeacht de hoeveelheid omgevingslicht. Dit kom je in de realiteit nooit tegen.

Hier gebruik ik een mix shader met de 'is camera ray' als input om een vorm van 'if' structuur te maken. Als de lichtstraal naar de camera gaat, toon dan de shader in het groenige kader, toon anders wat er in het oranje kader staat (wat in dit geval een puur transparante shader is, zodat er zelfs geen schaduw te zien is, maar hier kan je eender wat doen(bijvoorbeeld ook een emission shader in een andere kleur zetten, dan heb je object dat bijvoorbeeld groen licht uitstraalt, maar er zelf rood uitziet)).

Op die laatste afbeelding: links optie 1, rechts optie 2, ter vergelijking. En beiden werken zelfs zonder omgevingslicht.
Ik denk dat je met de 'glow in the dark', de eerste optie nodig hebt.
Bijvoorbeeld:

(Negeer het paarse kleurtje op de node.) De meest linkse ster is zo donker als ze word (dus zonder emission, enkel diffusion, met zeer weinig achtergrond licht). Naar mate je meer emission geeft (dus het paarse cijfertje), krijg je de rechtse ster.

In jou voorbeeld, gebruik je de afbeelding mee om te bepalen waar je diffuse ziet en waar emission. Op donkere delen van je afbeelding zal weinig emission worden toegepast en enkel de diffuse zichtbaar zijn. Op heldere delen zal enkel emission zichtbaar zijn, maar als je dan de sterkte van de emission naar 0 zet, dan gaan die delen zwart worden.
Wil de afbeelding gebruiken als emission map (dus een afbeelding die met zwart wit bepaald waar een object diffuse en waar emission is), dan gebruik je de afbeelding enkel in de factor en niet in de emission of diffuse shader.
Een voorbeeld van het gebruik van een emission map:

In het cyaan de emission map (waarbij ik een RGBtoBW node gebruik om zwart wit  te krijgen, de mapping node gebruik ik hier omdat te verhouding van de twee afbeeldingen niet gelijk is, anders wordt de tekst sterk vervormd.). De het bovenste vlak toont in zwartwit die map.
In het wit/grijzig de achtergrond, gewoon metaal met wat krasjes op.
In het geel de emission shader, een veronoi texture dat gaat van rood naar oranje om iets vurigs te maken.
Via een mix shader met de emission map in de factor beslis ik dan waar wat wordt getoond.

Helpt dit een beetje?

superjamie

« Reactie #8 Gepost op: 24 april 2016, 13:31:53 pm »
Ok, ik doe een poging om te helpen, maar ik ben nog altijd niet mee met wat je wilt bereiken. Dus dan maar meerdere opties:

1) Een shader die licht uitstraalt volgens de kleuren van een foto en als je de intensiteit naar 0 zet, nog altijd de foto toont. Dit kan je doen door een diffuse en emission shader te combineren.

Hierbij gebruik ik de 'add' shader om ze te combineren. Het resultaat is een diffuse oppervlakte, waar een emission bij wordt opgeteld. als je de sterkte van de emission dan op 0 zet, dan heb je enkel nog de diffuse.
alternatief is ze te combineren via een mix shader, maar dan moet je met de factor van de mix gaan spelen om te wisselen tussen diffuse en emission.

2) Een shader die een foto toont ongeacht de belichting = shadeless material. Dit soort materialen wordt vaak gebruikt voor projectoren of billboards. Ze mogen geen invloed op de omgeving hebben, maar moeten wel steeds hun afbeelding tonen, ongeacht de hoeveelheid omgevingslicht. Dit kom je in de realiteit nooit tegen.

Hier gebruik ik een mix shader met de 'is camera ray' als input om een vorm van 'if' structuur te maken. Als de lichtstraal naar de camera gaat, toon dan de shader in het groenige kader, toon anders wat er in het oranje kader staat (wat in dit geval een puur transparante shader is, zodat er zelfs geen schaduw te zien is, maar hier kan je eender wat doen(bijvoorbeeld ook een emission shader in een andere kleur zetten, dan heb je object dat bijvoorbeeld groen licht uitstraalt, maar er zelf rood uitziet)).

Op die laatste afbeelding: links optie 1, rechts optie 2, ter vergelijking. En beiden werken zelfs zonder omgevingslicht.
Ik denk dat je met de 'glow in the dark', de eerste optie nodig hebt.
Bijvoorbeeld:

(Negeer het paarse kleurtje op de node.) De meest linkse ster is zo donker als ze word (dus zonder emission, enkel diffusion, met zeer weinig achtergrond licht). Naar mate je meer emission geeft (dus het paarse cijfertje), krijg je de rechtse ster.

In jou voorbeeld, gebruik je de afbeelding mee om te bepalen waar je diffuse ziet en waar emission. Op donkere delen van je afbeelding zal weinig emission worden toegepast en enkel de diffuse zichtbaar zijn. Op heldere delen zal enkel emission zichtbaar zijn, maar als je dan de sterkte van de emission naar 0 zet, dan gaan die delen zwart worden.
Wil de afbeelding gebruiken als emission map (dus een afbeelding die met zwart wit bepaald waar een object diffuse en waar emission is), dan gebruik je de afbeelding enkel in de factor en niet in de emission of diffuse shader.
Een voorbeeld van het gebruik van een emission map:

In het cyaan de emission map (waarbij ik een RGBtoBW node gebruik om zwart wit  te krijgen, de mapping node gebruik ik hier omdat te verhouding van de twee afbeeldingen niet gelijk is, anders wordt de tekst sterk vervormd.). De het bovenste vlak toont in zwartwit die map.
In het wit/grijzig de achtergrond, gewoon metaal met wat krasjes op.
In het geel de emission shader, een veronoi texture dat gaat van rood naar oranje om iets vurigs te maken.
Via een mix shader met de emission map in de factor beslis ik dan waar wat wordt getoond.

Helpt dit een beetje?

Ja, dit helpt geloof ik op de eerste methode die je hebt gepost, ik heb de andere manieren
nog niet geprobeerd, maar dat doe ik misschien later wel. Hier zie je hoe ik dat deed:

Afbeelding - Emission belichting uit:






Afbeelding - Emission belichting aan:






Alvast bedankt voor je hulp,
Groetjes Jamie.