20.01.2008, 17:03 | #1 (permalink) |
Registriert seit: 04.01.2008
Beiträge: 178
|
Infrarot
So nu7n weiss ich wie man per script ne blende bastelt. (setaperture)
was ich nun nicht weiss ist : wie man die einheiten zum leuchten bringt. ich meine die einheiten sollen leuchten während das script läuft. ich bastel mir ne bessere Flir variante über nen actioneintrag der einheit nun frag ich mal die profis : wie genau muss das script aussehen , wo alle einheiten auf der karte oder in sichtweite beim start des setaperture eine lichtquelle zugewiesen bekommen. b.z.w die textur leuchtet. also ich meine das sozusagen entweder die textur hell leuchtet oder alle eine schwache lichtquelle zugewiesen bekommen , die den einheiten folgt. ganz einfach kurz : infrarot. |
20.01.2008, 17:30 | #2 (permalink) |
Registriert seit: 17.01.2008
Beiträge: 267
|
Lampen anfügen geht folgendermaßen:
_light1 = "#lightpoint" createVehicle getpos _target; _light1 setLightBrightness 0.3; _light1 setLightAmbient[0.0, 0.0, 0.0]; _light1 setLightColor[1.0, 1.0, 1.0]; _light1 lightAttachObject [_target, [0,0,0]]; Die werte kannste ja ändern wie du willst bzw im Biki nochmal nachgucken. Allerdings bin ich mir nicht so sicher ob das damit so gut aussieht. Müsste man ausprobieren. Achja was für nen guten Infrarotmodus auch noch vorteilhaft ist, ist wenn du zusätzlich zu der aperture auchnoch die tageszeit auf Nacht änderst. Sieht dann u.U. glaubwürdiger aus. Die andere Möglichkeit wegen dem Leuchten wäre das du dir ein Sprite dafür machst und das über drop an die Einheit ranhängst die leuchten soll. Damit hätte die dann so eine Art Aura.
__________________
|
20.01.2008, 17:36 | #3 (permalink) |
Registriert seit: 13.04.2003
Ort: Monerica
Alter: 42
Beiträge: 32.977
|
Mit Lichtquellen wird ja auch der Boden um die Einheiten erleuchtet, ausserdem bekommen die dann diesen dämlichen no-contrast shader verpasst ..
Ein perfektes "IR Leuchten" simuliert der Queens Gambit Medic Bug! Da ist wohl irgendwas mit den rvmat´s schief gelaufen - nun leuchten die Typen als kämen sie grad aus Pripjat Mein Vorschlag wäre also herauszufinden was da verbockt wurde, dieses für alle Einheiten umzusetzen, und ein IR taugliches Addonpaket zu schnüren (welches ohne IR allerdings verdammt kagge aussieht). |
20.01.2008, 18:17 | #4 (permalink) |
Registriert seit: 17.01.2008
Beiträge: 267
|
Ja wiegesagt kommt auf n Versuch an, bei nem niedrigen Aperture wert ist der Kontrast so hoch das die Lichtquelle nicht sonderlich stark sein muss. Besonders wenn man die Tageszeit auf Nacht stellt.
Ich probier das selbst mal eben aus und guck was dabei rauskommt. ^^
__________________
|
21.01.2008, 00:30 | #5 (permalink) |
Registriert seit: 17.01.2008
Beiträge: 267
|
*update*
So siehts dann aus: http://screenshot.xfire.com/screensh...2b330cb878.jpg http://screenshot.xfire.com/screensh...2de9a49928.jpg Verwendet man 3-4 Lichter mit niedriger Intensität wird der Boden nicht bzw kaum mitbeleuchtet. Problem bei der Sache ist allerdings das ArmA nur eine begrenzte Zahl lichter darstellen kann. Wenn also viel los ist klappt das so nicht immer. Zusätzlich zu den Lichtern haben die Soldaten noch 2 leuchtende Sprites bekommen mithilfe des "drop" Befehls. Dazu noch n paar kleine Schönheitskorrekturen was die Umgebung angeht aber das würde hier den Rahmen sprengen.
__________________
|
21.01.2008, 06:49 | #6 (permalink) |
Registriert seit: 01.12.2006
Ort: Hessen
Beiträge: 116
|
Das sieht ja auf jeden Fall schon mal vielversprechend aus^^
Kann man auch eine ganze Textur zum Leuchten bringen? Ähnlich dem Herrn QC Medic? Wäre es nicht möglich eine solche Textur nur unter bestimmten Umständen zu laden, so wie etwa die Verwundungen? |
21.01.2008, 12:59 | #8 (permalink) |
Registriert seit: 17.01.2008
Beiträge: 267
|
Bei mir sieht das so aus (zumindest der wichtigste Teil)
Code:
// Infrarot tidist = 200; _obj = player; for [{_loop=0}, {tinfra == "true"}, {_loop=_loop}] do { setAperture 0.07; sleep 2.5; _targets = []; _targets = nearestObjects [player, ["Man"], tidist]; for [{_t=0}, {_t<(count _targets)}, {_t=_t+1}] do { _obj = _targets select _t; if (format ["%1",_obj getVariable "glowing"] != "true") then { if (alive _obj) then { nul = [_obj] execVM "glow.sqf"; }; }; }; }; setAperture -1; Code:
// glow.sqf _obj = _this select 0; if !(alive _obj) exitWith {}; _obj setVariable ["glowing", "true"]; _light1 = "#lightpoint" createVehicle getpos _obj; _light1 lightAttachObject [_obj, [0.3,-0.2,1]]; _light1 setLightBrightness 0.0004; _light1 setLightAmbient[1,1,1]; _light1 setLightColor[1,1,1]; _light2 = "#lightpoint" createVehicle getpos _obj; _light2 lightAttachObject [_obj, [-0.3,-0.2,1]]; _light2 setLightBrightness 0.0004; _light2 setLightAmbient[1,1,1]; _light2 setLightColor[1,1,1]; _light3 = "#lightpoint" createVehicle getpos _obj; _light3 lightAttachObject [_obj, [0.0,0.3,1]]; _light3 setLightBrightness 0.0004; _light3 setLightAmbient[1,1,1]; _light3 setLightColor[1,1,1]; _light4 = "#lightpoint" createVehicle getpos _obj; _light4 lightAttachObject [_obj, [0.0,0.0,0]]; _light4 setLightBrightness 0.0004; _light4 setLightAmbient[1,1,1]; _light4 setLightColor[1,1,1]; for [{_loop=0}, {((_obj distance player) < (tidist+20)) && (tinfra == "true") && alive _obj}, {_loop=_loop}] do { _bbox = boundingBox _obj; _bh = (_bbox select 1) select 2; if (_bh > 1) then { _light1 lightAttachObject [_obj, [0.2,0.2,1]]; _light2 lightAttachObject [_obj, [0.2,-0.2,1]]; _light3 lightAttachObject [_obj, [-0.2,0.2,1]]; _light4 lightAttachObject [_obj, [-0.2,-0.2,1]]; if (side _obj == side player) then { drop ["\Ca\Data\sunHalo.p3d","","Billboard",0.5,0.1,[0,0.2,1.7],[0,0,0],0,1,0.778,0,[0.8,0.8],[[1,1,1,0.1],[1,1,1,0.0]],[1,0],0,0,"","",_obj]; }; drop ["\Ca\Data\sunHalo.p3d","","Billboard",0.5,1,[0,0,1.3],[0,0,0],0,1,0.778,0,[1.2,1.2],[[1,1,1,0.1],[1,1,1,0.0]],[1,0],0,0,"","",_obj]; drop ["\Ca\Data\sunHalo.p3d","","Billboard",0.5,1,[0,0,0.9],[0,0,0],0,1,0.778,0,[0.8,0.8],[[1,1,1,0.1],[1,1,1,0.0]],[1,0],0,0,"","",_obj]; } else { _light1 lightAttachObject [_obj, [0.0,0.3,0.2]]; _light2 lightAttachObject [_obj, [0.0,-0.2,0.2]]; _light3 lightAttachObject [_obj, [-0.1,0.0,0.2]]; _light4 lightAttachObject [_obj, [0.1,-0.0,0.2]]; if (side _obj == side player) then { drop ["\Ca\Data\sunHalo.p3d","","Billboard",0.5,0.1,[0,0.6,0.5],[0,0,0],0,1,0.778,0,[0.8,0.8],[[1,1,1,0.1],[1,1,1,0.0]],[1,0],0,0,"","",_obj]; }; drop ["\Ca\Data\sunHalo.p3d","","Billboard",0.5,1,[0,0.3,0.2],[0,0,0],0,1,0.778,0,[1.2,1.2],[[1,1,1,0.1],[1,1,1,0.0]],[1,0],0,0,"","",_obj]; drop ["\Ca\Data\sunHalo.p3d","","Billboard",0.5,1,[0,-0.2,0.2],[0,0,0],0,1,0.778,0,[0.8,0.8],[[1,1,1,0.1],[1,1,1,0.0]],[1,0],0,0,"","",_obj]; }; sleep 0.2; }; deleteVehicle _light1; deleteVehicle _light2; deleteVehicle _light3; deleteVehicle _light4; _obj setVariable ["glowing", "false"]; Übergeordnet wäre noch ein script welches das ganze aufruft und fürs ein/auschalten sowie den Zeitwechsel zuständig ist. ps.: das ganze sind natürlich .sqf scripte, keine sqs !!!
__________________
Geändert von Tajin (21.01.2008 um 13:06 Uhr). |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|