Yksi opas täällä todella tarvittaisiin, nimittäin 3D-ohjelmointiin liittyvä opas. Olisiko täällä ketään (esim. Hunajavohveli tai setä) joka osaisi sitä sen verran, että voisi kirjoittaa siihen (helposti ymmärrettävän) oppaan?
Ja kielenä voisi olla Basic ja varmasti tälläinen olisi käytännöllinen myös C-kielessä.
Niin pääsisivät aloittelijat (esim minä) alkuun 3D-ohjelmoinnissa.
No miksipäs ei. Olenkin tuossa juuti 3D kirjastoa tekemässä, että miksipäs en tekisi opasta jostain ja voisi jonkin näyttävän pelimoottorinkin rukata :). Minä en muuten sitten mitään tyhmää OpenGL ala Visual baiscille opettamaan. Minä teen ikiomat funktiot 3D:n piirtämiseen ja ukkelin liikuttamiseen ja muuhun jos sopii? Tai, jos on aivan pakko alkaa OpenGL opasta vääntämään niin kaipa se sitten on pakko :).
3D:stä olis kyllä ihan mielenkiintoinen lukea juttua, jos siitä jaksaa joku joskus jotain kirjoittaa.
Luin tuossa profiilisi mamaze. Sinua siis vaivaa 3D-ohjelmoinnin salaisuus? No, se vaivasi minuakin pitkän aikaa, ja oikeastaan nyt vaivaa vielä enemmän, kun huomasin, että pystyn tekemään jo tuollaisen kuin Linkku, sillä haluan pyrkiä aina vain parempaan ja seuraava tavoite on tekstuurit. Tai no, ensin voisi poistaa Linkun bugit...
Jos 3D noin kovasti kiinnostaa, niin suosittelen, että odotat yhdeksännen luokan trigonometrian kursseja. Ne avaavat edes vähän 3D-ohjelmoinnin maailmaa. Itse en tosin jaksanut odottaa, vaan opettelin trigonometrin varmaan vuotta ennemmin oma-alotteisesti.
Miksi trigonometriaa tulisi odottaa? No siksi, että sen avulla opit laskemaan kulmia, ja kulmat ovat 3D:ssä (ainakin Linkussa) asian ydin. Jos sinulla on vaikka suorakulmainen kolmio, ja tiedät sen sivujen pituudet, voit trigonometrian avulla laskea kolmion kulmat. Mikä tuo suorakulmainen kolmio sitten on? No, se on se kolmio, jonka voit piirtää kameran ja kappaleen välille. Tämä on mutkikasta selittää sellaiselle, joka ei tiedä vielä mitään trigonometriasta.
En oikein tiedä tuosta oppaasta. Voisin toki kirjoittaa oppaan siitä, miten tehdä saman tyylinen moottori kuin Linkku, mutta sanon taas kerran, että Linkku ei ole mikään maailman paras esimerkki 3D-ohjelmoinnista, enkä haluasi johdatella aloittelijoita väärille teille, sillä Linkku ei luullakseni käytä aivan samoja periaatteita, kuin kunnon moottorit.
Jos haluat opetella 3D:tä jo nyt, opettele trigonometriaa jo nyt, ja yritä tehdä vaikka sellainen 3D-pyöritys juttu. Löydät varmaan putkasta sellaisia koodivinkkejä.
Reiska tota et viitsis tehdä OpenGL opasta Dev-C++:salle.
Sovitaan vaikka niin, että voin kyllä kirjoittaa "The making of Linkku3D"-tyylisen oppaan, jos vain saan tälle ehdotukselle riittävästi kannatusta kokeneemmiltakin ohjelmoijilta. Haluan ensin kuulla heidän mielipiteensä Linkusta, ennen kuin rupean kirjoittamaan mitään, mistä voisi seurata negatiivista palautetta ja reippaasti.
rndprogy: http://www.mit.jyu.fi/opiskelu/seminaarit/
Eli siis. Teenkö minä sen oppaan vai en?
[C,C++ ja Delphi] Mun Dev-C++ ei kääntänyt noita esimerkkejä. Mutta kyllä se Devin oman OpenGL esimerkin käänsi. Kokeilin NEHEnkin oppaita. Kerrohan tai kertokaa joku mikä vika siinä sitten on. Se joka toimisi siinä oli #include <Gl\gl.h> mutta kun se käyttää vaikka <Gl\gul.h> niin ei käännä [/C,C++ ja Delphi]
edit: tee opas minun puolestani :)
lainaus:
http://www.mit.jyu.fi/opiskelu/seminaarit/
ohjelmistotekniikka/opengl/
Ei oikein löydy tuota sivua. Osaatkos remontti-reiska ohjelmoida 3D:tä? En ole ainakaan huomannut sinun kommentoineen mitenkään, kun 3D:stä on keskusteluissa puhuttu. Mietin vaan, ettei kannata ruveta kirjoittamaan, jos ei ole perehtynyt asiaan. Minäkään en oikein viitsisi välttämättä ruveta.
rndprogy: C++ on eriasia kuin Vb. Pitääpä miettiä jaksaako sitä alkaa mitään kirjoittelemaan :).
https://www.ohjelmointiputka.net/koodivinkit/
Tossa pyöriteltävässä 3D-kuutiossa on nuo trigonometrian kaavat kaikessa yksinkertaisuudessaan ja syntyivät perspektiivikuvan projisointia miettiessä. Kommentointi noista kaavoista puuttuu mutta voisin lisätä jos niistä jollekin on hyötyä. Muuta 3D-juttua en ole tehnyt joten hunajavohveli ja remonttireiska tässä varmaan lienee parempia asiantuntijoita.
No voihan sitä aina yrittää ;D. En ala sitten mitään matematiikkaa tai muuta vastaavaa opettamaan, kun sellaiset tulevat koulussa ajanmittaan. Näytän vain miten piirrettään vaikka kuutio, "kameran" kulmia ja muita vastaavia helpotuksia.
remontti-reiska mitäs jos alkaisit pikkuhiljaa rakentaa opasta että siitä ei tulisi mitään yhden sivun opasta vaan siis niinkuin esim vb:n aloittelijan opas eli enemmänkin tekstiä ajan kanssa just että lähtisi liikkeelle ihan yksinkertaisimmista asioista tyyliin: aluksi pitäisi olla jo pieni käsitys trigonometriasta (ps. itekki tullut opeteltua normaalia aikaisemmin :)) sitten sen jälkeen lähdetään käymään läpi ekat perusteet, mitä tarvitaan? no kaikkihan tietää että läjäpäin tekstuureita, eri malleja, lensflaret jne... :D ei kuiteskaan :)
vaan ihan siitä että aluksi luodaan esim laatikko taulukkoon koordinaatteineen, karvoineen sitten sen jälkeen myös kameroista pientä juttua ja sitten eka loppuprosessi eli yritetään tuoda laatikon wireframet kameralle näytille
kun tämä onnistuu ymmärretään mistä on kyse tyyliin :) sen jälkeen siihen voisi koittaa lisätä esim kameran x-koordinaatin liikuttamista tyyliin: x = Sin(i) * 50 + picture1.Width / 2 - 25
tai jotain vastaavaa, tai se joka tekee sen oppaan päättää ite mitä sinne kirjoittaa mutta itse lähtisin näistä asioista liikkelle ja varmasti unohdin sata vielä tärkeämpää asiaa jotka koskee aloittelijoita :)
Parantelin hieman tuota pyöriteltävää 3D-kuutiota ja päivitin koodivinkkiä. Exen voi kopsata sivulta http://personal.inet.fi/atk/korant/download
Geometrian selostaminen ilman kuvia on aika hankalaa. Jos tarvetta löytyy, voin lisätä download-sivulle selostusta kuvineen.
Tehkää 3D opas visual basicille!
lainaus:
No voihan sitä aina yrittää ;D. En ala sitten mitään matematiikkaa tai muuta vastaavaa opettamaan, kun sellaiset tulevat koulussa ajanmittaan. Näytän vain miten piirrettään vaikka kuutio, "kameran" kulmia ja muita vastaavia helpotuksia.
Ikävä kyllä tuohon täytyy sanoa, että 3D-ohjelmointi ei mitään muuta olekaan kuin matematiikkaa. Itse asiassa ohjelmointi ylipäätänsä perustuu vain matikkaan ja logiikkaan. Mitään moottoria ei saa aikaan, ellei tunne trigonometriaa. Siksi minun olikin pakko opetella aikaisemmin, kun olin kiinnostunut. Siis nythän toki minulla on jo koulussa trigonometria ollut. Voit toki kirjoittaa noista luettelemistasi asioista, mutta minun käsittääkseni tässä haetaan nimenomaan engineä. Setäkin toki osaa hienosti pyöritys3D:tä, paljon paremmin kuin minä, enkä vieläkään omasta päästä ajattelemalla ole saanut kuutiota kääntymään kolmannen akselin ympäri, mutta kuten setä sanoikin, hän ei ole perehtynyt kunnon pelimoottoriin.
Sanon vielä, että voin kirjoittaa, miten tein Linkun, jos ehdotus saa kannatusta.
Kannatetaan...!
Tee Linkusta versio visual basicille.
Kannatetaan sitäkin
No tuon VB-version voisi kyllä ainakin tehdä. Eihän siinä oikeastaan tarvi muuta kuin kopsata koodi. Periaattessa, mikä toimii QB:llä, toimii myös VB:llä ilman olioita.
Njaah milestäni 3D on helpointa DirectX:llä.
no ei kai sentään...kun ton "2D DirextX:llä" - oppaan lukee, ei kyllä ymmärrä mitään (ainakaan minä)
Hunajavohveli: kyllä periaatteessa 3D:tä pystyy selostamaan ilman matematiikkaa. Jos oppaaseen alkaisi matematiikkaa väsäilemään siitä tulisi entistä vaikeampi lukuista ja todella vaikeaa selostaa. DirectX on kyllä helppo piirtää 3D:tä, mutta se on sitäkin vaikeampi oppia. Suoraa OpenGL:ää peliin ;D. Olen alkanut sitä jo rakentelemaan. Opas voi kestää esimerkkikoodien osalta aikakauan, kun olen aika laiska luonne (jotkut ovat sen jo huomanneet ;D). Tai sitten jos julkaisisin esimerkki koodit vasta viimeisessä oppaassa, niin tulisi muut oppaat sukkelammin valmiiksi. Tai teen tämän, niin
kuin halutaan :). Minulla on sitten omat systeemit, joista osa voi olla hitaamman puoleisia ja taas osa hieman nopeampia. Eli kumman näistä teen:
- Esimerkkikoodit oikeissa paikoissaan
- Esimerkki koodit erillisessä oppaassa
Eli äänestelkää ja vaikuttakaan :D.
edit: Hunajavophveli xD
lainaus:
Esimerkkikoodit oikeissa paikoissaan
Muuten tulee liian sekavaa..
3D-ohjelmointi on ikävä kyllä melkoisen laaja aihe ja "helposti ymmärrettävää" opasta siitä on vaikea tehdä. Ja matematiikkaa olisi myös hyvä osata. Mielenkiintoista nähdä mitä saatte aikaan :) Voisin periaatteessa itsekin joskus väsäillä aloittelijoille jonkinmoisen yleiskattavan 3D-oppaan vaikka tietoni sillä saralla ovatkin vielä suhteellisen huonot.
lainaus:
lainaus:
Esimerkkikoodit oikeissa paikoissaan
Muuten tulee liian sekavaa..
Oppaan tekeminen tulee olemaan hyvin työlästä ja vaivalloista ;D. No ei tuo hirveän syy ole, mutta oppaan tekeminen kestää jonkin verran enemmän. Katsotaan nyt mitä saan aikaiseksi. Voisinhan minä tehdä vaikka opas sarjan jossa tehdään pari taloa ja ukkeli, jota pystyy liikuttelemaan :).
Vaikka laittaisit ensin, kuinka alustetaan projekti VB:llä,
ja sitten jokin pieni esimerkki.
Vain ohjelmoimalla oppii... (Vähän kerrallan)..
olisihan se todella kiva jos joku kirjoittaisi 3d-oppaan.
edit: d =! s
Jos tuossa DirectX tekee 3D:n ihan itsestään, se on jo periaattessa valmis moottori. Itse olen lähtenyt siitä, että teen moottorini itse. Väittääkö täällä joku, ettei 3D-moottorin tekoon tarvita matematiikkaa?
Sanopa remontti-reiska, jos moottorillesi syötetään kameran 3d-koordinaatit, pisteen koordinaatit, ja kameran kulmat, minkälaisella kaavalla moottori laskee, mihin kohtaa näyttöä piste piirretään?
Hunajavohveli: kyllä se tajutaan yhdelläkin viestillä :D. Jooh, mietin, että tekisin ensimmäiseen oppaaseen pyöriteltävän postilaatikon, jonka luukun pystyy avata :). Tietysti rautalankana, mutta seuraavassa oppaassa tehdään jotakin mukavampia hommia siihen, kuten esim. värit ja tekstuurit.
No se on hyvä jos tajutaan. Saisiko kysymykseen vielä vastauksenkin? Ja mikä muuten on OpenGL? En tiedä noista VB:n erikoisuuksista paljon mitään.
OpenGL = Ilmainen grafiikka kirjasto. En tiedä sen toimivuudesta VB:ssä mutta toimii hyvin ainakin cpp:ssä.
OpenGL:n ohjelmointikirjastot tulevat ainakin Dev-c++:n mukana ja hunaja: Windowsin jotkut näytön saasätäjät käyttävät OpenGL:llää josset tiennyt. Se ei siis ole erikseen mikään VB:n erikoisuus.
OpenGL voi ohjelmoida myös Visual basicilla ja se olisi toinen vaihtoehto postilaatikon kanssa :D.
lainaus:
Ja mikä muuten on OpenGL? En tiedä noista VB:n erikoisuuksista paljon mitään.
Ei ole mikään Visual Basic tai edes Windows-spesifinen juttu, vaan ihan vähintään Direct3D:n tasoinen multiplatform grafiikkarajapinta.
GL muistaakseni sanoista Graphics Library.
lainaus:
no ei kai sentään...kun ton "2D DirextX:llä" - oppaan lukee, ei kyllä ymmärrä mitään (ainakaan minä)
No kehno kirjoittaja, niin minkäs teet... :)
Hunajavojveli: Sanoinko, etten minä käytä matematiikkaa oppaassani tai koodeissani? Eli nyt olen päätänyt minkälaosen oppaan teen. Ekassa on piirto tokassa on kamerat kolmannessa tekstuurit ja aihe tulee olemaan postilaatikko. Siis ykkös oppaassa piirretään postilaatikko toisessa oppaassa tehdä kamera(sen jälkeen pystyy pyöritellä) ja kolmannessa värjätään postilaatikko. Sitten seuraavat oppaat tulevat myöhemmin. Luukun avaus tehdään kameran yhteydessä. Odottakaa innolla :D.
Sanoit, että 3D:tä pystyy selostamaan ilman matikkaa. Mutta unohda se matikkahommeli. Et vieläkään vastannut kysymykseeni:
lainaus:
Sanopa remontti-reiska, jos moottorillesi syötetään kameran 3d-koordinaatit, pisteen koordinaatit, ja kameran kulmat, minkälaisella kaavalla moottori laskee, mihin kohtaa näyttöä piste piirretään?
Siis ensimmäisessä oppaassa on piirto? No mitenkä voidaan muka piirtää jos ei tiedetä, missä on se kamera, joka katsoo esinettä?
Sanokaas nyt siis mitä DirectX tekee? Eikö se jotenkin auta grafiikan piirtämisessä, tai auta jotenkin näytönohjainta, kun jotkut pelit ei pyöri ilman viimeisintä versiota? Tekstuurit on varmaan nopea piirtää DirectX:llä, mutta sisältääkö DirectX 3D-moottorin?
En vastaa tuohon kysymykseen :). Teen oppaan omalla tavallani enkä kuuntele sinun ohjeitasi :). DirectX on eräänlainen pelikirjasto; muusiikkeja DirectSoundilla, syöttöä DirectInputilla, grafiikkaa DirectDrawilla ja niin edespäin. Ja vielä tuosta kysymyksestä. En ole tekemässä pelimoottoria ja en näe mitään järkeä vastata kysymykseen. Näet sitten, kun opas tai opassarja on valmis. Postilaatikolle tehdään kamera jo ensimmäisessä osassa, mutta varsin alkeellinen semmoinen. Toisessa sitä vahvistetaan ja pistetään se pyörimään ja kolmannessa tekstuureita, kuten olen jo huomauttanut.
Direct3D:tä (DirectX:n 3D-osa) tai OpenGL:ää ei voi kumpaakaan sanoa 3D-moottoriksi. Toki ne piirtävät fillatut persepktiivikorjatut tekstuurimapatut bilineaarisesti filtteröidyt kolmiot ruudulle parilla funktiokutsulla, mutta ei se vielä tee niistä 3D-moottoreita. Kunnon moottori tarjoaa noiden ominaisuuksien käyttämiseen vielä huomattavasti helpommat rajapinnat, jotka koostuvat vaikkapa struktuureista ja funktioista, tai oliopohjaisen lähestymistavan tapauksessa luokista.
Eli siis pähkinänkuoressa, Direct3D tarjoaa standardin rajapinnan näytönohjaimeen. Näin softanvääntäjän ei tarvitse erikseen huolehtia eri näytönohjaimien tukemisesta.
Lisättäköön vielä että nykyisellään Direct3D tarjoaa kyllä monia funktioita joilla jonkinlaisen pelin voi kyhätä suht. helposti ilman kunnon moottoriakaan. D3DX sisältää funktiot muun muuassa matriisien kanssa leikkimiselle ja 3D-modellien lataamiselle.
lainaus:
Teen oppaan omalla tavallani enkä kuuntele sinun ohjeitasi :)
En ole mitään ohjeita ollut antamassakaan. Halusin vain saada tietää, minkälaisia funktioita käytät. Mutta fawkzin vastaus selitti minulle mistä on kysymys. Eli et siis siksi tarvitse matikkaa, koska Direct3D tekee 3D-laskutoimitukset. Onhan se hyvä, jos olet perehtynyt enemmän DirectX:ään. Siitä kun ei ilmeisesti paljon tietoa muilla ole. Paitsi nyt se yksi opas, mutta sillähän tehdään vain 2D:tä. DirectX:llähän saa varmasti Visual Basicille vaikka mitä hienoa tehtyä, joten jäänpä minäkin sitten innolla odottamaan mitä saat aikaan. Pitäisi kai itsekin siirtyä valmiisiin laskutoimituksiin. Olen vain aina pitänyt periaatteena sitä, etten käytä koodia, mistä en tiedä, mitä se tekee, ja miten se toimii. Teen alusta asti kaiken itse siksi, että siten oppii parhaiten. Mutta onnea vaan oppaan kirjoitukselle. :)
eikös sellainen OpenGL tai mikälie olisi aloittelijoille hyvä? vai onko se yhtä monimutkaista kuin Direct3D?
ja jos joku päätti opasta ruveta kirjoittamaan, niin koskahan se valmistuu?
Siis joillain on täysin väärä käsitys DirectX:stä. Aluksi katsottuna se saattaa näyttää monimutkaiselta, mutta jos sitä alkaa kokeilemaan niin huomaa kuinka yksinkertaista se on. Esim. jos yksinkertaista 3D:ta kaivataan, ei tarvitse tehdä paljoa: Initializointi, joka on helppo homma. Siinä yhteydessä sitten asetellaan koordinaatit objekteille ja niiden tekstuureille (sekä ladataan ne tekstuurit) ja laitetaan ne muistiin. Sitten vaan pää luuppiin piirto käsky joka sitten saa ne objektit näkymään. Niin yksinkertaista se on.
lainaus:
Onhan se hyvä, jos olet perehtynyt enemmän DirectX:ään. Siitä kun ei ilmeisesti paljon tietoa muilla ole.
No minulla on :D
Eli osaan tehdä DirectX:ää käyttäen 3D grafiikkaa (+ muutakin kuin grafiikkaa) VB:llä ja C++:lla.
DirectX koodi on todella helppoa kun vain muutaman perusasian oppii.
On kai sitten aloitettava lukemalla opas "2D:tä DirectX:llä". Vaikutti kyllä aluksi aika monimutkaiselta, mutta ei kai se sitten ole. Nyt kyllä harmittaa, jos kerran 3D:tä näin helposti saa aikaiseksi ja minä tein QB:lle ihan omat systeemit Linkku3D:tä varten. Toistaalta, onhan siinä jotain hienoa edes se, että se oli kokonaan itse tehty, eikä tarvittu mitään apukirjastoja, tai muuta, mutta kaippa on jätettävä omien laskutoimistusten tekeminen pois ja siirryttävä valmiisiin, kun niiden käyttö kerran helppoa tuntuu olevan.
no eikö pääasia kumminkin ole että saa tehtyä hyvän 3D-pelin.
Juu! Kannattaa myöskin muistaa että DirectX on nopea ;)
Ja siinä on sitten muutakin kuin grafiikka toimintoja, esim. joystickin seurausta, voi tehdä omia force feedback efektejä. Sitten kaikki 3D äänet... ja tietysti verkko toiminta :D
Totta kai pääasia on, että tulee hienoa jälkeä. Ennemmin nyt tietysti käytetään DirectX:ää kuin Linkku3D:tä. :)
mutta, kuinkas tuon paljon puhutun "2D:tä DirectX:llä" oppaan perusteella tehdään 3D:tä? siis meinaan että kun kaikki pakolliset toiminnot yms. on tehty, mitä sitten pitää tehdä?
En teekkään sitä opasta, kun täällä ollaan niin kiinnostuneita DirectX:stä.
no tee (kunnollinen) opas vaikka DirectX:stä ja sillä 3D:ohjelmoinnista! no ei vaiskaa, tee vaan se opas sillä totuus kumminkin on se, että jos itse pystyy edes jonkinlaisen kuvion tekemään... kyllä siitä oppaasta hyötyä olisi! tee vain!
lainaus:
mutta, kuinkas tuon paljon puhutun "2D:tä DirectX:llä" oppaan perusteella tehdään 3D:tä? siis meinaan että kun kaikki pakolliset toiminnot yms. on tehty, mitä sitten pitää tehdä?
Tuon pohjalta sitä ei voi oikeastaan tehdä. Suuntaa directx4vb.com:iin ja suoraan mene tutorials / directx 8 / graphicks osaan. Siinä tehdää aluksi 2D:tä eri tyyliin kuin Blazen oppaassa. Se tyyli ei välttämättä tunnu kovin hyvältä, mutta se johdattelee 3D:n käyttöön; jos haluat siitä 3D:tä niin määrittelet vaan matriisit...ja tietysti vertexeille uuden tyypin. Tosi helppoa kun oppii!
remontti-reiska; tee vaan se opas, voisi olla kiinnostavaa lukemista ;D
No kaipa sitä aikaakin riittää.
Aihe on jo aika vanha, joten et voi enää vastata siihen.