Monday, November 27, 2006

Maximinė logika

Nu susibiesinau 6adienį bilekaip, ir atrodo dėl smulkmenos. Žodžiu situacija: kaip ir gavau atlyginimą, šaldytuvas tuščias, skrandis gurkia - reik maisto. Pašoliuoju iki maxima (xxx) dainavoje (prie bazių), vaikštau sau, kraunuosi duoną, pieną dar kažką ir pagaliau prieinu prie mėgstamiausio skyriaus maximose (ir kitose parduotuvėse) - salotų/mišrainių skyriaus. Skyriukas nemenkas, 3 kasos, porą pardavėjų, pasirinkimas sakyčiau liux. Kam 3 kasos? Na mano nuomonė tokia: skyrius suskirstytas į 3 poskyrius (iš kairės į dešinę) - žuvies visokios nesąmonės, salotos, mišrainės. na aš laukiu sau prie centrinės kasos, nes noriu *salotų*. prie mišrainių skyriaus prisirinkę liaudies, perka mišrainė tonom, balta, žuvies ir t.t. na galvoju palauksiu, prieis ir aptarnaus, juolab, kad kai prie žuvies skyriaus prieina žmogus - viena iš pardavėjų bėgą ir daro savo darbą. Žodž, stovėjau taip 5 minutes, prabėgančios pardavėjos dar tyčioj užsiteiravau vienos mišrainės (vitamininės), na ta sako neturiu ir vėl prie mišrainių. Uff nu bleen nervas pagavo ir nuėjau namo. Galėjau aišku prie mišraininių prisiplakt ir užprašyt salotų, ale nžn, kažkas užstrigo galvoj ir ėjau nafig aš iš ten (-.

Thursday, November 23, 2006

Dantai

Ech, teisybę žmogai sako: nueik pas dantistą dėl vieno danties, tai išaiškės, kad reikės preparuot vos ne 95% tų niekšų. Dar kažkaip pas mane belekas su jais darosi, paprastai nepagręši, kiek dantų tiek nuskausminimų*2, skylės tokio dydžio kaip pro teleskopą žiūrint į mėnulio kraterius. O dar kai dantis tvarko draugė - tai kažkaip net nepatogu ir bišk gėda savo "briliantus" rodyt (-.

Permainos

Bišk bandau naują googlės blogger betą. Nemačiau bleen, kad galima seną numigruot, tai viską rankutėmis perkelinėjau o paskui ištryniau senuką )-.

Apache ir ASP.NET/ASP.NET 2.0

Trumpas ir aiškus straipsniukas kaip ant Apache 2.x web serverio paleisti Asp.NET ar Asp.NET 2.0 puslapius. Apache ir ASP.NET/ASP.NET 2.0

(Savaitgalis || Karštis) != Darbas

Atėjo savaitgalis - kelionė link Molėtų, tiksliau link Juodųjų Lakajų ežero. Patikėkit manimi - tiek žmonių, apspitusių ežerą, nemačiau dar nė karto gyvenime. Palapinės belekaip pastatytos: kampu, kažkaip persivertusios, spėju miega visi į kampą sugriuvę (-; mašinos nerealiai priparkuotos, tarp 4 medžių (gal ten prupučiamos). Na bet gana... Vanduo fainas, pusarbatė nevirinta, saulė jau pernelyg stipriai kepina (kaip visada vasara noriu, kad kuo greičiau žiema ateitų), įlendi į ežerą, išlipi, 10 min, lendi į ežerą, repeat.. Žodžiu fantastika beveik, pakol negrįžau į Kauną... belekaip koma iš karto, 34 šilumos, dirbt nesidirba, miegot nesimiega, aplamai lavonas gulintis beveik (-. Oj saulė pro langą pašvietė, tingiu kažką rašyt, einu gult, ate... (-

RecImageViewer apdovanojimas

Kažkaip netikėtai RecImageViewer gavo Softpedia 100% CLEAN Award apdovanojimą.
Plačiau apie tai - Softpedia 100% CLEAN Award
Programa - http://www.softpedia.com/get/Multimedia/Graphic/Graphic-Viewers/RecImageViewer.shtml

y0!!!

Tai va šian pagaliau damušiau sesiją! Hehe galvojau pagaidins dėstytuvas, ale kažkaip net 8 palupau (-. Šiai egzo laikymai buvo 3 ar tai 4, tai visuose tik 50% išlaikydavo (dėstytojas pirmi metai, labai "švelnus" tokis). Na bet vo. Žodž geriam, nestabdom lewdis (-.

Kokteiliukai

Kažkaip čia atsitiko taip, kad neteko namuose trejetą dienų būt. Na netikėtos šventės ir panašiai (-. Ir netyčiom kalba apie kokteiliukus užėjo. Parekomendavau receptą, kurį įvaldęs per naujaką buvau: 1/2 šampo, 1/2 vermuto ir citrina (tiksliau griežinėlis ar kaip jis vadinas). Kažkas pasiūlė vermutą su alum... Tik va nepamento recepto dabar. Gal kas ką smulkiau papasakot gali? (-

Išdūrimas vol.2

Kažkaip sekasi man su dėstytojais. Šian reikėjo rašyt IT (Internetinių Technologijų) egzaminą. Susirinko visi 8:00, laukia kada atvyx dėstytojas. 9:00 - daugiau kaip pusės nebeliko. 9:10 - kažkas susiprotėjo, kad turi dėstytojo tel.nr. Paskambino, paklausė ar ateis į egzaminą, ir ar išvis jis bus. Dėstytuvas padėjo ragelį be jokios frazės. 9:23 - pagaliau pasirodė. Visi pagalvojom, aš netikėtai pajutau norą prabilti ir pasiūliau perkelti egzą ryt 10:00. Sutiko (-. Pasijutau vierchas.
P.S. ir vėl normaliai nepamiegojau )-.

Išdūrė

Blemba ir taip nekenčiu keltis anxčiau nei tarkim 11:30, o čia dar išdurtas pasijaučiau. Krč atsikėliau į egzą, tačiau kadangi nesu atsiskaitęs poros laborų, reikėjo nuvaryt ir per egzą atsiskaityt. Šiaip ne taip nulėkiau, ir vien dėl to, kad išgirsčiau, jog tipo susitarsim kitą kartą... Abidna vienžo...

3d animacija [pabaiga]

Taigi pagaliau atsiskaitėm. Parodėm jėgą ir likom įvertinti (-. Tik va nepadariau nei šešėlių, nei lightmapinimo. Nelabai su pastaruoju gavos, nes nelabai sugalvojau kaip susiet verteksiukus. Šiaip galiu visai didžiuoti, kad per 5 dienas padarėm visai daug (-.
Respect demoscene.

3d animacija [tęsinys]

Kai pagalvoji, tai dažniausiai smulkmenos ir gadina gyvenimą. Anksčiau rašiau, kad kažko neveikia stencil buferis, prasiknisau ir pagaliau išsiaiškinau, kad SDL bibliotekėlė po defaultu nenustato jo dydžio. Nustačiau 8 bitams - atspindžiai tiesiog skraido (-.
Dėl šešėlių - sugalvojau, kad mūsų projektukui jų arba nereikia, arba darysiu paprastus stencil projected. Apšvietimui panaudosiu lightmap'inimą (q2 jis tiko, kuo mes blogesni (- ).
Ai tiesa, kadangi aš nesirūpinu objektų kūrimu su max'iuku, tai šian pastebėjau tokią keistenybę: duris sudaro 40 trikampių, tuo tarpu 1 iš 4rių vyrių - po ~1200 trikampių, dar rankena apie 400 ((-. Tai dabar visi optimizuoja tik, kad net kibirkštys lekia.

3d animacija [tęsinys]

Jau pradeda užknist. 4ta diena vis dėlto. Padarėm importavimą, su max'u supaišėm visus objektus (kolidorius, kelios durų rūšys, langai, kėdės, stalai), o aš užsiknisau jau antra diena bandydamas padaryt engine'ą, tą prasme kad viskas būtų ne hardkodinta, bet mapą krautų iš vieno failo, objektus iš kitų, tekstūros vėl iš belekur. Įpusėjau daryt stencelinius reflectionus (laptopai zjbs, bet kad visi kažkokie nestiprūs (- ), bet matyt galva persprogus jau, nes nifiga nesigauna (-. galų gale mūsų entertainment manager (4 darom, vienas tik daba nuo darbo nusiplovė. tai paskyrėm atsakinga dar ir už pramogas (- ) sumąstė nuvaryt kur pasitrint. Visi pamąstėm, pabalsavom ir kažkas nusprendė kad reiktu sunaikint pora kebabų. Sunaikinom. Ir ne tik, dar po hamburgerį paėmėm (nesąmonė šitas). Pažiūrėjom kažkokį 2000m. b.c. klipą ir draugiškai susinervinom, kad per mažai laiko turim. Nusprendėm ryt padirbėt (greičiausiai ne).
Laukite tęsinio...

c# 3D max *.obj importer'is

Tęsiant 3d kursinio temą. Kaip minėjau sumąstėm modelius kurt su 3d max'u, o visą animaciją ir t.t. - su openGL. Taigi tenka kažkaip importuot į c# max'o sukurtus modelius (iš max'o exportuojam į *.obj tipą). Sakau gal kam pravers, naudokitės į sveikatą (-.

using System.IO;
namespace OBJLoader
{
public static class Loader
{
public class VERTEX //aprašas vertex'ui
{
public float x, y, z;
}

public class TEXTCOORDS //aprašas textūros koordinatėms
{
public float u, v;
}

public class TRIANGLE //vieno trikampio aprašymas
{
public TRIANGLE()
{
vertex = new VERTEX[3];
}

public VERTEX[] vertex;
}

public class NORMAL //normalės aprašas
{
public NORMAL()
{
vertex = new VERTEX[3];
}

public VERTEX[] vertex;
}

public class TEXTURE //teksturos aprašas
{
public TEXTURE()
{
vertex = new TEXTCOORDS[3];
}

public TEXTCOORDS[] vertex;
}

public class OBJECT3D //visas 3d objektas
{
public int nTriangles; //trikampių kiekis
public TRIANGLE[] triangle; //trikampių masyvas
public NORMAL[] normal; //normalių masyvas
public TEXTURE[] texture; //tekstūrų koordinačių masyvas
}

//-------------------------------------------------------
public static OBJECT3D LoadObject(string FileName)
{
OBJECT3D obj = new OBJECT3D();
VERTEX[] vert = null;
VERTEX[] normal = null;
TEXTCOORDS[] texture = null;

int value, iVertex, iNormal, iTexture, iFace, tmp, iVertexCount, iTextCount;
iFace = iVertex = iNormal = iTexture = iVertexCount = iTextCount = 0;

int fv1, fv11, fv111, fv2, fv22, fv222, fv3, fv33, fv333;
string[] str;

TextReader file = File.OpenText(FileName);
string line;
while ((line = file.ReadLine()) != null)
{
str = line.Split(new char[] {' '}, System.StringSplitOptions.RemoveEmptyEntries);
if (str.Length > 2)
{
if ((str[0] == "#") && (int.TryParse(str[1], out value)))
{
switch (str[2][0])
{
case 'v':
iVertexCount = value;
vert = new VERTEX[iVertexCount];
normal = new VERTEX[iVertexCount];
break;
case 't':
iTextCount = value;
texture = new TEXTCOORDS[iTextCount];
break;
case 'f':
obj.nTriangles = value;
obj.triangle = new TRIANGLE[value];
obj.normal = new NORMAL[value];
obj.texture = new TEXTURE[value];
break;
}
}
}
}

//skaitom duomenis
file.Close();
file = File.OpenText(FileName);
//kadangi obj failiuke dešimtainis simbolis yra taškas
//o pas kai ką nustatymuose pasirinktas kablelis
System.Globalization.NumberFormatInfo nfi = new System.Globalization.NumberFormatInfo();
nfi.CurrencyDecimalSeparator = ".";
while ((line = file.ReadLine()) != null)
{
str = line.Split(new char[] { ' ' }, System.StringSplitOptions.RemoveEmptyEntries);
if ((str.Length == 4) && (str[0] == "v") && (iVertex < iVertexCount))
{
vert[iVertex] = new VERTEX();
vert[iVertex].x = float.Parse(str[1], nfi);
vert[iVertex].y = float.Parse(str[2], nfi);
vert[iVertex].z = float.Parse(str[3], nfi);
iVertex++;
}
else if ((str.Length > 0) && (str[0] == "vt") && (iTexture < iTextCount))
{
texture[iTexture] = new TEXTCOORDS();
texture[iTexture].u = float.Parse(str[1], nfi);
texture[iTexture].v = float.Parse(str[2], nfi);
iTexture++;
}
else if ((str.Length > 0) && (str[0] == "vn") && (iNormal < iVertexCount))
{
normal[iNormal] = new VERTEX();
normal[iNormal].x = float.Parse(str[1], nfi);
normal[iNormal].y = float.Parse(str[2], nfi);
normal[iNormal].z = float.Parse(str[3], nfi);
iNormal++;
}
else if ((str.Length == 4) && (str[0] == "f"))
{
string[] str1 = str[1].Split('/');
string[] str2 = str[2].Split('/');
string[] str3 = str[3].Split('/');
if ((str1.Length > 1) && (str2.Length > 1) && (str3.Length > 1))
{

fv1 = System.Math.Abs(int.Parse(str1[0]));
if (int.TryParse(str1[1], out fv11))
{
fv11 = System.Math.Abs(fv11);
}
else
{
fv11 = -1;
}
if (str1.Length > 2)
{
fv111 = System.Math.Abs(int.Parse(str1[2]));
}
else
{
fv111 = -1;
}

fv2 = System.Math.Abs(int.Parse(str2[0]));
if (int.TryParse(str2[1], out fv22))
{
fv22 = System.Math.Abs(fv22);
}
else
{
fv22 = -1;
}
if (str2.Length > 2)
{
fv222 = System.Math.Abs(int.Parse(str2[2]));
}
else
{
fv222 = -1;
}

fv3 = System.Math.Abs(int.Parse(str3[0]));
if (int.TryParse(str3[1], out fv33))
{
fv33 = System.Math.Abs(fv33);
}
else
{
fv33 = -1;
}
if (str2.Length > 2)
{
fv333 = System.Math.Abs(int.Parse(str3[2]));
}
else
{
fv333 = -1;
}

obj.triangle[iFace] = new TRIANGLE();
obj.texture[iFace] = new TEXTURE();
obj.normal[iFace] = new NORMAL();

for (int i = 0; i < 3; i++ )
{
obj.triangle[iFace].vertex[i] = new VERTEX();
obj.texture[iFace].vertex[i] = new TEXTCOORDS();
obj.normal[iFace].vertex[i] = new VERTEX();
}

tmp = fv1 - 1;
obj.triangle[iFace].vertex[0].x = vert[tmp].x;
obj.triangle[iFace].vertex[0].y = vert[tmp].y;
obj.triangle[iFace].vertex[0].z = vert[tmp].z;

if (fv11 != -1)
{
tmp = fv11 - 1;
obj.texture[iFace].vertex[0].u = texture[tmp].u;
obj.texture[iFace].vertex[0].v = texture[tmp].v;
}
if (fv111 != -1)
{
tmp = fv111 - 1;
obj.normal[iFace].vertex[0].x = normal[tmp].x;
obj.normal[iFace].vertex[0].y = normal[tmp].y;
obj.normal[iFace].vertex[0].z = normal[tmp].z;
}

tmp = fv2 - 1;
obj.triangle[iFace].vertex[1].x = vert[tmp].x;
obj.triangle[iFace].vertex[1].y = vert[tmp].y;
obj.triangle[iFace].vertex[1].z = vert[tmp].z;

if (fv22 != -1)
{
tmp = fv22 - 1;
obj.texture[iFace].vertex[1].u = texture[tmp].u;
obj.texture[iFace].vertex[1].v = texture[tmp].v;
}
if (fv222 != -1)
{
tmp = fv222 - 1;
obj.normal[iFace].vertex[1].x = normal[tmp].x;
obj.normal[iFace].vertex[1].y = normal[tmp].y;
obj.normal[iFace].vertex[1].z = normal[tmp].z;
}

tmp = fv3 - 1;
obj.triangle[iFace].vertex[2].x = vert[tmp].x;
obj.triangle[iFace].vertex[2].y = vert[tmp].y;
obj.triangle[iFace].vertex[2].z = vert[tmp].z;

if (fv33 != -1)
{
tmp = fv33 - 1;
obj.texture[iFace].vertex[2].u = texture[tmp].u;
obj.texture[iFace].vertex[2].v = texture[tmp].v;
}
if (fv333 != -1)
{
tmp = fv333 - 1;
obj.normal[iFace].vertex[2].x = normal[tmp].x;
obj.normal[iFace].vertex[2].y = normal[tmp].y;
obj.normal[iFace].vertex[2].z = normal[tmp].z;
}

iFace++;
}
}
}
file.Close();
return obj;
}
}
}

Beje apribojimai: viename *.obj faile turi būti tik 1 objektas.

Smirdalynė

Uf šiandien susinervyjau. Kažkaip pastebėjau, kad pastaruoju metu pamėgo smarviniai (diedai visokie apsivare) laidabraukiais (aka šleikom) važinėt. Nu nei šis nei tas krč -. Situacija buvo tokia: stoviu reiškias aš atsistojęs (-;, šalia babanė tokia (na ok ok, motera) stovi su krepšiais. Stotelė, atsistojo nuo vienos kėdės kažkoks asmuo (nežiūrėjau - neidomu), na ta moterėlė su savo toniniais krepšisia jau praktiškai sėdėjimo poza 15 cm nuo kėdės, staiga iššoka iš už kadro smarvinis, pastumia sėdėsį beįvaldančią babikę, pats šast ir sėdi. Maždaug dar komentarą išmala - "Dėkui dievui ir jums ponia, kad dievulis neduotu jums progos su lazdele vaikščiot"... O pats tai kaip dramblio kaulo kranto sprinteris trigubu salto per stulpelius špagatais iki kėdės atlekė.Žodžiu... Bet susinervinau ne dėl to, o todėl kad jau kvapelis tai nu i nelabai taip. Pagaut reiktų tokį ir duot pasirinkt: arba maudaisi karta į savaitę bent, arba ampėtysim kulkom.

3d kursinis

Buvo semestras ir liko savaitė. Kam? Ogi reik pagamind 3d animacijos kursinį, ir žinoma susiruošėm tik dabar (-. Idėja tokia: KTU Elektronikos rūmų 4 aukšto informatikos katedros kolidoriaus maketas ir animacija. Na vaikštai atceit po kolidoriuką, prieini prie durų, pabaladoji (ar kažkas tokios) ir tau rodo info apie tame kabinete esančius dėstytuvus. Tiesa reik dar 2 efektus pridėt, kol kas sumąstėm tik atspindžius ir šešėlius (pixel šeideriukai ar pan). Naudosim c# (su Tao framework) ir openGL (modeliukai su 3d max'u).Taigi apie likusią savaitę. Vakar susirinkom, pašnekėjom (alaus gaila nebuvo), ir nusprendėm susitikt šiandien ir pradėt rimtai daryt kažką (-. Šiandien: atsinešė kolega lapku, nes reik vs 2005 sumest. Aha, setupas sako, kad nėr service pack'o 2. Ajnam į winupdeitus (pasijungėm skaičiukuose nuo kompo kabelį, nes nėr bevielio įrengta). Updeitino 2 valandas (pasirodo nuo instaliavimo lapkus nematė updeitų šviesos). Dar pusvalandis visual studios instaliavimui. Baigėm, bandom kažką žiūrėt... Atvaro budėtojas ir pareiškia, kad laikas visiems namo )-. Pakalvojom kad kūl ir nusprendėm ryt susitikt anxčiau, na apie 10 kažkur (-. Taigi sux biški kai užtempi laiką...