Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

81

12.02.2014, 15:40

Ich nehme Wetten an, wie viele Seiten dieser Thread haben wird, wenn das Geheimnis gelüftet wird! :D

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

82

12.02.2014, 15:47

Durch das Lehrhafte Ratespiel kann ein thread länger werden



Wie schaut es aus ?

Es ist ein Ansatz. Also noch verbesserungswürdig!!!

:D :D :D :D :D
»Sebastian Müller« hat folgendes Bild angehängt:
  • Unbenannt.png

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

83

12.02.2014, 15:48

Schaut ja schon nach etwas aus...

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

84

12.02.2014, 15:50

Find ich auch.

jedoch muss ich nicht die Feinheiten erledigen, weil es genau so aussieht, wie der alte falloff. (vor dem thread)


war es den richtig ???

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

85

12.02.2014, 15:56

Keine Ahnung, dazu müsste man wohl deinen Code anschaun... ;)

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

86

12.02.2014, 16:00

HLSL-Quelltext

1
2
3
4
float Distane = Length(input.WorldPos - Lights[0].Position);

float FallOff = Lights[0].Distance - Distane;
Diffuse_Light *= FallOff * 10;


Length() gibt mir die Vectorlänge;
ich muss * 10 nehmen, weil ich sonst nichts sehe.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

87

12.02.2014, 16:08

ich muss * 10 nehmen, weil ich sonst nichts sehe.

Wie war das nochmal mit dem Rumprobieren?

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

88

12.02.2014, 16:36

Ich weiß!!! anders bekomme ich es noch nicht hin.

Denn Rest schaffe ich schon alleine.

Jedoch weiß immer noch nicht, ob es richtig oder falsch war.



Ich weiß, dass das hier nicht zum Thread gehört.

Ich möchte gerne mal bei einem Projekt mitmachen, um meine Praxiserfahrung zu verbessern. kennst du eins, dass bald startet oder wo man beitreten kann.

Ich habe bemerkt, dass alleine programmieren schlecht und kein Spaß macht.

89

12.02.2014, 19:40

Richtig kann es nicht sein. Ich finde merkwürdig, dass dein Ergebnis noch so gut aussieht. An der scheinbar willkürlichen Multiplikation mit 10 wird aber doch ersichtlich, dass irgendwas nicht stimmen kann.
Wenn man auch mal kurz über die Einheiten in deiner Rechnung nachdenkt, stellt man folgendes fest:
1. Du berechnest die Distanz zwischen Licht und aktuellem Punkt -> Längeneinheit, sagen wir also mal Meter.
2. Du berechnest die Differenz zwischen Lichtausbreitungsradius (Light[0].Distance) und der berechneten Distanz -> Einheit: Meter
3. Du multipliziert Diffuse_Light (einen Farbwert) mit dieser Differenz (und mit 10) -> Einheit: Farbmeter?
Im letzten Schritt möchtest du aber eine Farbe erhalten. Dein Falloff-Faktor muss also zwangsläufig einheitenlos sein.

Was du haben möchtest, ist dass die Helligkeit des diffusen Lichtbeitrags linear mit der Distanz abnimmt. Dabei soll das Licht maximal beitragen (also 100% von Diffuse_Light), wenn die Distanz 0 ist, und gar nicht mehr, wenn die Distanz größer als der Ausbreitungsradius ist. Wie bereits (mehrfach?) erwähnt, muss dein Falloff also ein prozentualer Wert sein. Also in jedem Fall zwischen 0 und 1 und ohne Einheit. Außerdem muss er von der Distanz abhängen.
Wenn du jetzt noch berücksichtigst, was patrick246 in diesem Beitrag schrieb, dann sollte die Lösung eigentlich offensichtlich sein. (Wobei nicht korrekt ist, dass die Intensität hier der Kehrwert des Distanzverhältnisses ist).

Zum Vergleich nochmal kurz, welche Schritte du am Ende herausbekommen solltest:
1. Berechne die Distanz <- das hast du schon
2. Berechne den Falloff als prozentualen Wert
3. Diffuse_Light *= Falloff

Ich glaube mehr Tipps kann ich nicht geben, ohne die Lösung direkt zu verraten. Können wir jetzt in wenigen Seiten zum Ende kommen? :)

Edit: Ich tippe jetzt optimistisch auf 11 Seiten, David.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »lumip« (12.02.2014, 19:48)


FSA

Community-Fossil

  • Private Nachricht senden

90

12.02.2014, 19:52

Noch ein Tipp: Du denkst komplett falsch, was saturate angeht. Lasse die Funktion erstmal weg.

Was anderes: Ich weiß nicht, ob nur ich das so sehe, aber ein Forum ist kein Chat.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Werbeanzeige