Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

TriXelniZer (experiment)

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 10.09.2012, 08:48    Titel: TriXelniZer (experiment) Antworten mit Zitat

Ein Projekt von den ich mir anfangs mehr versprochen habe und in eine Sackgasse endete. Es sollte eine 2D Bitmap in ein 3D Objekt umwandeln, seh experimental das ganze und leider sehr unausgereift, aber funktionsfähig...

Kein sonderlich nützliches Projekt jedoch steckt dennoch einiges an arbeit darin und ist möglicherweise für irgendwen von interesse...

weiteres dazu auf meiner Seite: http://eternalpain.tgp-gaming.de/

Edit: der Name von TriXelniZer enstand aus dem umrechnen von Pixel in Triangles (dreiecke), daraus das Wort 'Trixel'....

Code:

LoadImage:
   Lädt und bereitet eine BMP Datei vor

   LoadImage(filename as String)

   (nach dem laden der Bitmap können die weiter unten aufgeführten Einstellungen
   vorgenommen werden.
   Anschliessen müssen die Funktionen CreateObjectMap, CreateTrixelMap und CreateTriangleList
   ausgeführt werden.
   anschliessend kann aus den fertigen 'Maps' das OBJ gespeichert werden)
   

SaveOBJ:
   speichert die errechneten Daten in eine (wavefront) OBJ Datei

   SaveOBJ(filename as String)

Set_tColor:

   Setzten einer Transparentzfarbe (Standard: #(FF)000000 schwarz)
   Set_tColor(tColor as UInteger)

Set_ImageOption:

   Stellt den Berechnungsmodus fest

   TN_monochrom = duotonebild, das Bild wird in schwarzweis gewandelt und verrechnet
   TN_grayscale = das Bild wird in graustufen gewandelt welche dann als Z/Tiefeninformation vorliegen
   TN_multicolor (experimetal) = Bild wird in N Farben und somit Objekte reduziert
   Standard ist TN_monochrom

   Set_ImageOption(ImageOption as TN_Token)

Set_NormalOption:

   Set_NormalOption(NormalOption as Bool)
   Standard ist 0 (none) keine Normale berechnen 1 (true) berechnet die Normalen

Set_UVMapOption:
   Stellt die Brechnungsart der UVMap Koordinaten ein

   Set_UVMapOption(UVMapOption as Integer)
   0 = keine UVMap berechnen
   1 = per pixel
   2 = grösse des Images
   3 = grösse des Objekts (standard)

Set_3DOption:
   Stellt ein wie das Objekt verrechnet werden soll, je nach Einstellung von ImageOption
   wird eingestellt ob das Objekt nur einseitig/Flach oder doppelseitig/extruhiert verrechnet wird

   Set_3DOption(3DOption as Integer)
   0 = ImageOption = TN_monochrom oder TN_multicolor 'Flat' ImageOption = TN_grayscale 'singleside'
   1 = ImageOption = TN_monochrom oder TN_multicolor 'extruded' ImageOption = TN_grayscale 'doubleside'

Set_monochromOption:
   Setzen des Helligkeitsgrad zum umrechnen des Images in Duotone (0-255)

   Set_monochromOption(monochromOption as Integer)
   Standard = 128

Set_grayscaleOption: (experimental)
   Setzt das Tiefenlevel bei Graubildoption
   
   Set_grayscaleOption(level as Double)
   1.0 = standard

Set_multicolorOption: (experimantal)
   setzt die anzahl Farben/Objekte (0-16+) (standard = 8)

   Set_multicolorOption(num as integer)

_________________


Zuletzt bearbeitet von Eternal_pain am 10.09.2012, 12:41, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
SpionAtom



Anmeldungsdatum: 10.01.2005
Beiträge: 395

BeitragVerfasst am: 10.09.2012, 10:20    Titel: Antworten mit Zitat

Kompilier doch mal, dann hab ich auch was davon! grinsen
_________________
Inzwischen gehöre ich auch zu den BlitzBasicern. Also verzeiht mir, wenn mir mal ein LOCATE 100, 100 oder dergleichen rausrutscht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Eternal_pain



Anmeldungsdatum: 08.08.2006
Beiträge: 1783
Wohnort: BW/KA

BeitragVerfasst am: 10.09.2012, 12:42    Titel: Antworten mit Zitat

Es ist nur eine Klasse mit einer Ansammlung von Funktionen, bisher habe ich noch keine Zeit und Lust gehabt sowas wie eine 'Benutzeroberfläche' oder ähnliches zu gestalten, daher bringt das kompilieren leider nicht viel....

Ich habe oben im Codeblock ein paar kurze erklärungen zu den Einstellungsmöglichkeiten erstellt....

Edit:
Der (Beispiel)Code zum verrechnen des beigelegten Logos (trixelnizer.bmp) mit 3D 'touch' (TNgrayscale):
Code:

Screen 19,32 'screen ist nötig

Dim Trixelnizer as Class_TriXelniZer
    Trixelnizer.LoadImage("trixelnizer.bmp")
   
    Trixelnizer.Set_ImageOption(TN_grayscale)
   
    Trixelnizer.Set_3DOption(1)
   
    Trixelnizer.CreateObjectMap()
    Trixelnizer.CreateTrixelMap()
    Trixelnizer.CreateTriangleList()
   
    Trixelnizer.SaveOBJ("trixelnizer.obj")


Das Ergebnis sieht dann (je nach programm) so aus:


96798 Vertices und 193536 Polygone
(die anzahl vertices und polygone sind mitunter der grund warum ich das ganze nicht weiter verfolge... es müsste 'besser' gehen...)
_________________
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 13.09.2012, 09:23    Titel: Antworten mit Zitat

Ich vermute mal, das kommt weil du jedes Picel in einen Vektor umwandelst, und diese nutzt, anstat die Pixel zueinander in eine Gemometrische funktion zu wandeln.
(habe mir aber den code nicht angesehen)

wenn du aber "gerade linien" (startx,y -> stopx,y) nutzt, sollte das ergebniss deutlich besser werden.

wie schon in meinen letzten posts zu den fragen dieses themas, hatte ich das beispielbild mal angeführt, auf dem zu erkennen war, das ich aus dem "umrandeten" "Objekt" geometrische funktionen heraus rechne. Die Pixel werden solange verfolgt bis sie eine zu grose gradiente abweichung erreichen. Dann wird aus dem erstem und dem letzten pixel eine linie gebildet. Das wiederholt sich solange, bis man den anfang vom pixelhaufen der umrandung erreicht hat.



das ist der test zur erkennugn eines "runden" objektes -> folge: circle

die grafen, unten, zeichen den verlauf der x und y koordinaten der umrand an, sowie die ändernungs "zeitpunkte". Es ist ganz unten, die weise linie, welche gelegentlich ausschlägt und bei jedem ausschlag eine "neue linie" generrieren muss.

von jedem ausschlag, zu jedem ausschlag wird die linie gebildet.

die grosen grafen zeichen farbig an, wo das aktuelle pixel (bild 3, 1. zeile) sitzt. es ist quasi die lineare darstellung der sin/cos funtktion auf die pixel bei einem kreis.

Die dritte ist die mischung aus der änderungsrate von sin und cos des kreises.

das ergebniss dieses gematsche ist dann in bild 4. zeile 2 zu sehen. man erkennt durch den wechsel von rot und blau die linien abschnitte.

zum schluss wird erkannt, das sich die linien in einem bestimmten verhältniss zueinander befieden, udn damit einen kreis darstellen der schlussendlich auch als kreis (circle-funktion) ins erste bild gezeichnet wird.


das selbe verfahren, bei schlechtere beleuchtung. Nun ist natürlich fraglich, ob es so noch ok ist, aus dem muster einen kreis zu bilden. .. aber .. naja....

http://mln.ath.cx/13.png ... das ganze mit einer bitmap
http://mln.ath.cx/9.png ... hier auch nochmal mit anderen objekten


hier mein entsprechender source dazu: http://ops.ath.cx/code?id=259

Meine ALgos hirzu sidn allerdigns noch im amfangsstadium, udn noch nicht optimal. es fehlt z.B. die erkennung von runden, schnellen kanten, welche in seperate linien gewandelt werden müssen, anstat in eine harte kante... udn noch so einige kleine optimierungen.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Projektvorstellungen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz