Eure Werke

Ich habe zwar auch eine HP aber die ist noch nicht so weit, dass sie öffentlich hergezeigt werden kann :D Vom Design her passt zwar schon alles aber am Umfang hapert es noch ein wenig.

Dafür habe ich schon andere Sachen gemacht und zwar interessiere ich mich für 3d-Design und hab schon ein paar Kleinigkeiten gemacht. Für mehr hab ich leider keine Zeit :( Momentan arbeite ich an einem Animations-Video aber ich habe noch nichtmal alle Objekte für das Video fertiggestellt geschweigeden Animationen ...

Zu meinen "Werken":


Diese Skulptur habe ich gemacht um mich mit Farben, Materialen, Beleuchtungen, ... zu spielen und die Funktionen kennenzulernen.


Diese Tipp-Ex Flasche ist zwar nix besonderes aber das Tut nachdem ich sie gemacht hat war voller Fehler. Ich glaube wenn ich es ohne Tut gemacht hätte wäre es schneller und schöner geworden X(
 
<offtopic>
Darf man fragen mit welcher Software du arbeitest? (beschäftige mich auch a weng mit diesem thema) bist du auch auf irgend welchen spezielen 3d-boards?
greet

christian
</offtopic>
 
Zum Thema 3D habe ich auch mal was gemacht, aber nur als Wallpaper für die eigene Verwendung (mit Cinema 4D)... alles so erste Laufversuche^^

Einmal
Und zweimal ;)

Und zum Thema Programmierung habe ich für die Fachhochschule ein kleines Programm zur Glättung von *pgm Bildern (Es gibt auch noch andere Optionen, wie Schwellwerte, Invertieren und Kantenbildung) geschrieben... allerdings nur bei Graustufigen *pgm Bildern. (Ihr müsstet euch ein Bild mit dem Namen "dreifach.pgm" besorgen oder im Quelltext etwas verändern... mit jpg etc. klappt es nicht)

Hier der Code

Code:
#include <stdio.h>

#include <stdlib.h>

#include <string.h>



#define N1 1000 // maximale Bildhöhe

#define N2 1000 // maximale Bildbreite



typedef unsigned char Pixel; // Datentyp Pixel

typedef struct pgm_bild Pgm_Bild; // Datentyp pgmBild



struct pgm_bild {

	char magic[10];		// Bildtyp

	int nx;				// Zeilenzahl

	int ny;				// Spaltenzahl

	int graumax;		// max. Grauwert

	Pixel bild[N1][N2];	// Bildmatrix

};



//Prototypen

void invertieren ( Pgm_Bild *bild1, Pgm_Bild *bild2 );

void glaetten ( Pgm_Bild *bild1, Pgm_Bild *bild2 );

void schwellwert ( Pgm_Bild *bild1, Pgm_Bild *bild2, Pixel schwellwert );

void kantenbildung ( Pgm_Bild *bild1, Pgm_Bild *bild2 );

int bild_lesen ( char *dateiname, Pgm_Bild *bild1 );

int bild_schreiben ( char *dateiname, Pgm_Bild *bild1 );





#define ASSERT(expr) if(!expr) { fprintf(stderr, "ASSERTION failed: %s\nfile: %s\nline: %d\n", #expr, __FILE__, __LINE__); exit(1); }

const char *error = 0;



/**

 * Einlesen einer Bilddatei im PGM Format

 * param char *dateiname	Name der Eingabedatei

 * param Pgm_Bild *bild	Rückgabe Struktur des Eingabebildes

 * return int              Status

 * 0: In Ordnung, 1: Fehler beim öffnen, 2: Fehler beim Lesen

 */

int bild_lesen ( char *dateiname, Pgm_Bild *bild )

{

	FILE	*infile;			// Eingabedatei

	char	zeile[3][10];		   // Zwischenspeicher für Header

	int		i,x,y;			   // Schleifenzähler

	int		color;			 // Zwischenspeicher für Farbwerte





	infile = fopen(dateiname, "r");

	if( !infile ) {

		error = "Kann Datei nicht finden/oeffnen.";

		return 1;

	}



	for( i=0; i<3 && !feof(infile); i++) {

		fgets( zeile[i], 9, infile );

	}



	if( i < 3 ) {

		error = "Datei ist keine korrekte PGM Datei.";

		return 2;

	}



	sscanf( zeile[0], "%s\n", bild->magic );



	bild->graumax = atoi( zeile[2] );

 	if( bild->graumax < 0 || bild->graumax > 255) {

		error = "Maximaler Grauwert muss zwischen 0 und 255 liegen.";

		return 2;

	}



	if( sscanf( zeile[1], "%d %d", &bild->nx, &bild->ny) != 2 ) {

		error = "Datei ist keine korrekte PGM Datei.\n";

		return 2;

	}



	if( bild->nx < 0 || bild->ny < 0 || bild->nx > N2 || bild->ny > N1 ) {

		error = "Bild zu gross oder zu klein";

		return 2;

	}





	for( y=0; y < bild->ny && !feof(infile); y++) {

		for( x = 0; x < bild->nx && !feof(infile) ; ) {

			if( fscanf( infile, "%d", &color ) != 1)  // ignoriere alle nicht-Ziffern

				continue;



			if( color < 0 || color > bild->graumax ) // ignoriere alle falschen Farbwerte

		    	continue;



			bild->bild[y][x++] = (Pixel) color;

		}

	}



	if( y != bild->ny || x != bild->nx ) {

		error = "Datei wurde nicht komplett geladen.";

		return 2;

	}



	fclose( infile );



	return 0;

}



/**

 * Schreiben der Bilddaten in eine Datei

 *param char *dateiname	Name der Ausgabedatei

 *param Pgm_Bild *bild	Struktur des Ausgabebildes

 *return int              Status

 *0: In Ordnung, 1: Fehler beim öffnen, 2: Fehler beim Schreiben

*/

int bild_schreiben ( char *dateiname, Pgm_Bild *bild )

{

	FILE *outfile;      // Dateihandle

	int x, y;           // Schleifenzähler



	outfile = fopen( dateiname, "w");

	if( !outfile ) {

		error = "Kann Datei nicht erstellen.";

		return 1;

	}



	fprintf( outfile, "%s\n", bild->magic);

	fprintf( outfile, "%d %d\n", bild->nx, bild->ny);

	fprintf( outfile, "%d\n", bild->graumax);

	for( y=0; y < bild->ny; y++) {

	    for( x=0; x < bild->nx; x++) {

			fprintf(outfile, "%4d", bild->bild[y][x]);

			if( (x*y+1) % 16 )

			    fprintf(outfile, "\n");

		}

	}

	if( y != bild->ny || x != bild->nx) {

		error = "Datei wurde nicht komplett gespeichert.";

	    return 2;

	}



	return 0;

}





//Invertierung

void invertieren ( Pgm_Bild *bild1, Pgm_Bild *bild2 )

{

	int x, y;           // Schleifenzähler



	ASSERT( bild1->nx == bild2->nx && bild1->ny == bild2->ny );



	for( y=0; y < bild2->ny; y++) {

		for( x=0; x < bild2->nx; x++) {

			bild2->bild[y][x] = bild1->graumax - bild1->bild[y][x];

		}

	}

}



void glaetten ( Pgm_Bild *bild1, Pgm_Bild *bild2 )

{

	int x, y;



	ASSERT( bild1->nx == bild2->nx && bild1->ny == bild2->ny);



	// Randpixel kopieren

	for( x = 0; x < bild2->nx; x++) {

		bild2->bild[0][x] = bild1->bild[0][x];

		bild2->bild[bild2->ny-1][x] = bild1->bild[bild2->ny-1][x];

	}

	for( y = 0; y < bild2->ny; y++) {

		bild2->bild[y][0] = bild1->bild[y][0];

		bild2->bild[y][bild2->nx-1] = bild1->bild[y][bild2->nx-1];

	}



	// Innere Pixel setzen

	for( y=1; y < (bild2->ny-1); y++) {

		for( x=1; x < (bild2->nx-1); x++) {

			bild2->bild[y][x] = (bild1->bild[y][x]		// Mitte

								+bild1->bild[y][x-1]	// links daneben

								+bild1->bild[y][x+1]	// rechts daneben

								+bild1->bild[y-1][x-1]	// links drüber

								+bild1->bild[y-1][x]	// genau drüber

								+bild1->bild[y-1][x+1]	// rechts drüber

								+bild1->bild[y+1][x-1]	// links drunter

								+bild1->bild[y+1][x]	// genau drunter

								+bild1->bild[y+1][x+1]	// rechts drunter

								) / 9;

		}

	}

}



void schwellwert ( Pgm_Bild *bild1, Pgm_Bild *bild2, Pixel schwellwert )

{

	int x, y;           // Schleifenzähler



	ASSERT( bild1->nx == bild2->nx && bild1->ny == bild2->ny);



	for( y = 0; y < bild2->ny; y++) {

		for( x=0; x < bild2->nx; x++) {

			bild2->bild[y][x] = bild1->bild[y][x] < schwellwert ? 0 : bild1->graumax;

		}

	}

}



void kantenbildung ( Pgm_Bild *bild1, Pgm_Bild *bild2 )

{

	int x, y;



	ASSERT( bild1->nx == bild2->nx && bild1->ny == bild2->ny);



	// Randpixel kopieren

	for( x = 0; x < bild2->nx; x++) {

		bild2->bild[0][x] = bild1->bild[0][x];

		bild2->bild[bild2->ny-1][x] = bild1->bild[bild2->ny-1][x];

	}

	for( y = 0; y < bild2->ny; y++) {

		bild2->bild[y][0] = bild1->bild[y][0];

		bild2->bild[y][bild2->nx-1] = bild1->bild[y][bild2->nx-1];

	}



	// Innere Pixel setzen

	for( y=1; y < (bild2->ny-1); y++) {

		for( x=1; x < (bild2->nx-1); x++) {

			bild2->bild[y][x] = abs(

								(4*bild1->bild[y][x]	// Mitte

								-bild1->bild[y][x-1]	// links daneben

								-bild1->bild[y][x+1]	// rechts daneben

								-bild1->bild[y-1][x]	// genau drüber

								-bild1->bild[y+1][x]	// genau drunter

								) / 9);

		}

	}

}



// Bild Details ausgeben

void details( Pgm_Bild *bild) {

	printf("Typ: %s\n", bild->magic);

	printf("NX:  %d\n", bild->nx);

	printf("NY:  %d\n", bild->ny);

	printf("Max: %d\n", bild->graumax);

}



int main(int argc, char *argv[])

{

	Pgm_Bild bild1, bild2;      // Ein- und Ausgabebildstruktur

	char auswahl;               // Benutzereingabe

	int rc;                     // Returncode



	rc = bild_lesen( "dreifach.pgm", &bild1);



	if( rc != 0 ) {

        fprintf(stderr, "FEHLER: %s\n", error);

 		return( rc );

	}







	// Ausgabebild initialisieren

	bild2.graumax = bild1.graumax;

	strcpy( bild2.magic, bild1.magic);

	bild2.nx = bild1.nx;

	bild2.ny = bild1.ny;



	auswahl = 0;

	while( !auswahl) {

		printf("\nBitte waehlen:\n");

		printf(" g Glaettung\n");

		printf(" i Invertierung\n");

		printf(" k Kantenbildung\n");

		printf(" s Schwellwert\n");

		printf("Auswahl:");

		auswahl = getchar();

		switch( auswahl ) {

			case 'g':                                                           // Glättung

			    glaetten( &bild1, &bild2);

				break;

			case 'i':                                                           // Invertierung

			    invertieren( &bild1, &bild2);

				break;

			case 'k':                                                           // Kantenerkennung

			    kantenbildung( &bild1, &bild2);

				break;

			case 's':                                                           // Schwellwert

			    schwellwert ( &bild1, &bild2, 150);

				break;

			default:

				printf("\n");

				auswahl = 0;

		}

	}





	rc = bild_schreiben( "dreifach.out.pgm", &bild2);



	if( rc != 0 ) {

		fprintf(stderr, "FEHLER: %s\n", error);

		return( rc );

	}



 	puts("ENTER druecken");

 	fflush( stdin );

	getchar();

	return 0;

}

MfG
Lord
 
habe n Space Invader Clon nach nem Tutorial geschrieben und bin nu dabei, neue Features einzubauen...
Is nich der Hammer, aber erfüllt seinen Zweck der Übung (is übrigens in Purebasic geschrieben)

wenn wer das spiel ma probieren will, der kann sich bei mir über ICQ melden
 
Zum Thema 3D habe ich auch mal was gemacht
Ich auch 8)

szene1-sample.jpg
 
Hallo! Wie lang habt ihr gebraucht um euch die Fähigkeiten des 3D-Modeling anzueignen? Die geeigneten Programme habe ich (Cinema 4D), nur die Basics fehlen mir^^ Gruss webfreak
 
@Mackz sehr schick, Programm? .. sogar ein Filmausschnitt?
@webfreak das kann relativ schnell gehen, wenn du ne Woche lang täglich paar Stunden spielst und die Grundlagen erlernst. Alles weitere ist nur viel Geduld und Detailarbeit.
 
Ich verwende auch Cinema4D.

Für alle die es lernen wollen: Lest auch das Handbuch zumindest mal etwas durch - alles ist eh viel zu viel :D
Macht dann ein paar Tuts, zu finden über Google und auf folgenden Seiten:
http://www.psd-tutorials.de/index.php
http://www.gfx-world.net
http://www.c4d-treff.de/news/
http://www.3d-ring.de
... das ist Auswahl von Seiten dich ich in meinen Bookmarks habe.

Trotzdem dauert es ziemlich lange bis man mal was ordentliches gebaut hat - wie man an meinen Bildern sieht bin ich noch nicht in diesem Status ^^

@Mackz: Hast du die Warbirds nach Blueprints gemacht?
 
Bleuprintseiten kenne ich genug, nur schaff ich es nicht die Sachen von den Blueprints 3d werden lassen :D

Ich hatte mal versucht eine Honda CRX zu modeln, Stoßstange und Motorhaube hatte ich und dann sind die 1. Probleme aufgetaucht, nämlich dass der Bleuprint von oben irgendwie nicht ganz mit dem von der Seite übereingestimmt hat ...
 
Remotec das ist immer wiedert so das die blueprint nicht 100 pro übereinstimmen was die ansichten angeht, ich habe das problem gelöst indem ich die blueprints in der größe skaliert habe und der vorhergehenden ansicht angepasst habe, auch wenn daraus nichts gescheites entstanden ist, so habe ich es zumindest geschaft ein objekt zu erzeugen das einem auto geglichen hat :D
naja, wie gesagt skalieren ist das zauberwort ^^

christian
 
Skaliert habe ich die Blueprints auch, nur der Maßstab hat irgendwie nicht gepasst.
Am Besten ich hänge mal ein Bild an, was ich meine.

Vielleicht kann mir jemand sagen wie das geht, dass es nicht so aussieht. Momentan habe ich zwar eh keine Zeit ein Auto, Flugzeug o.ä. zu modeln aber rein theoretisch wäre es interessant zu wissen.

mfg

RemoteC
 
eine linuxdistribution, die default mit e17 daherkommt und sich auch so anfühlt. nebenbei ein paar kleine widgets für dashboard, ein schönes kleines musikprojekt und was im metalab noch so rennt.
 
Ich bin grad dabei meiner alten billigen mit phpKit erstelten Homepage ein komplett neues Layout zu verpassen, sowie komplett neuen Inhalt, Forum, Chat etc. Wenn se fertig is schreib ich vieleicht noch mal hier rein...

Abgesehn davon will ich die Tage Linux aufspielen und mich dadurch kämpfen.

Ich hoffe ich habe den Sinn des Threads richtig verstanden ;)

Liebe Grüße


edit: fast fertig! www.nimmslocker.de

Liebe Grüße
 
ich belebe den thread einfach mal wieder in der hoffnung das er wieder aufgegriffen wird :D

Momentan möchte ich ein kleines Verschlüsselungsprogramm schreiben, allerdings hänge ich noch an dem problem fest das ich nicht weis wie ich die Texte richtig in eine Datei einlesen soll ^^ werde ich aber auch noch hinbekommen!

Christian
 
@Root
Gei...Mit was hast du das gemodded?
Bez. Bin schon lange auf der suche nach nem Tool, mit dem man z. B. Bots für Spiele modden kann...

Zu mir:
Ich hab mir grad n Trigo-Solver geschrieben(VB 2005 expr.). (Für meine Hausaufgaben) :D
In der GUI sieht man ein rechtwinkliges Dreieck in das man bekannte ANgaben wie Winkel oder Seiten eingibt.
Nach einem Klick auf berechnen ist es dann völlig berechnet. (So ferns möglich ist.)
Danaeben loggts auch was es gerade tut.

Greetz
IsNull
 
Ich müsste mich wiedermal dransetzen. Das (ungepackte) Video ist übrigens 120 mal so groß wie das Programm selbst (sollte ein 32k Projekt werden, im Moment sind so gut wie alle Grafiken sowie Musiklib drin und es bleben noch ganze 12 KB Platz für Musiktracks und Endgegenerzeug ;) )
 
Ich arbeite mit meinem Nachbarn zusammen an der "Juniorenaufgabe" des 25. Bundeswettbewerbs für Informatik...Wenn ihr euch das anguckt, werdet ihr wahtscheinlich lachen und mal eben schnell die Lösung haben, aber für mich is das ne ganz schöne Herausforderung;)
 
Zurück
Oben