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
Thursday, November 23, 2006
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 )-.
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.
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.
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...
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.
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.
Subscribe to:
Posts (Atom)
