» »

Kako preprosto prikazati 3D objekt, za katerega imaš podane vse trikotnike z koordinatami v prostoru?

Kako preprosto prikazati 3D objekt, za katerega imaš podane vse trikotnike z koordinatami v prostoru?

BogyX ::

Pozdravljeni

Najprej naj povem, da sem bol začetnik v programiranju...:8)

Imam datoteko STL, ki je datoteka 3D objekta zapisana s trikotniki in normalami teh istih trikotnikov (da se ve, kja je zunanji del trikotnika in kaj notranji).
Izgled je nekako tak:

solid piramida
facet normal -5.773503e-001 5.773503e-001 -5.773503e-001
outer loop
vertex 1.000000e+001 1.000000e+001 1.000000e+001
vertex 1.000000e+001 0.000000e+001 0.000000e+000
vertex 0.000000e+000 0.000000e+001 0.000000e+001
endloop
endfacet
facet normal 0.000000e+000 0.000000e+000 1.000000e+000
outer loop
vertex 1.000000e+001 1.000000e+001 1.000000e+001
vertex 0.000000e+000 0.000000e+000 0.000000e+001
vertex 1.000000e+001 0.000000e+000 1.000000e+001
endloop
endfacet
facet normal 1.000000e+000 0.000000e+000 0.000000e+000
outer loop
vertex 1.000000e+001 0.000000e+000 0.000000e+000
vertex 1.000000e+001 1.000000e+001 1.000000e+001
vertex 1.000000e+001 0.000000e+000 1.000000e+001
endloop
endfacet
facet normal 0.000000e+000 -1.000000e+000 0.000000e+000
outer loop
vertex 1.000000e+001 0.000000e+000 0.000000e+000
vertex 1.000000e+001 0.000000e+000 1.000000e+001
vertex 0.000000e+000 0.000000e+000 0.000000e+001
endloop
endfacet
endsolid

Tu so 4 trikotniki, pri vsakem je najprej podana normala, potem pa X, Y in Z koordinata ogljišča glede na koordinatno izhodišče.

Kak je sedaj najbol preprost način za prikaz te 3D slike z mislijo, da bodo nekoč ti trikotniki različnih barv, ki jih bo potrebno prikazati?
Obvezna je tudi opcija za ogled iz različnih zornih kotov, kar pomeni, da bo potrebno vse nekako rotirati.

Razmišljam da bi se naredilo z .NET, če je pa kakšna preprostejša varianta s čim drugim pa prosim če razložite.

Hvala

Lp
Bogdan

Gundolf ::

Kaj pomeni da si bolj začetnik v programiranju? A to pomeni, da bi se znašel v kakšnem .NET programskem jeziku (recimo C++ ali C#, VBja res nikomur ne bi priporočal). Če ti programski jezik ne dela problemov, potem se naučiti uporabljati eno grafično knjižnico ne bi smel biti problem. Recimo DirectX ali OpenGL (čeprav za GL ne vem kako je podprt v .NET) se da naučiti dokaj hitro. Oz. vsaj za OpenGL ti lahko iz lastnih izkušenj povem, da se ga lahko naučiš dovolj za tvoj program v enem dnevu. Pogledaš dva tutoriala in to je to. Enega modificiraš po svojih potrebah in to je to. Seveda, pri tem predpostavljam da nimaš problemov s tutoriali zaradi slabega poznavanja osnovnega programskega jezika.

Senitel ::

Se pridružujem Gundolfovemu mnenju... Tako v OpenGL kot v D3D ni problema naredit tega po dveh prebranih tutorialih. Problem zna nastat samo, če nisi dovolj spreten s programskim jezikom, ki ga boš izbral (napisat boš moral parser, ki ti bo prebral file).

sid_dabster ::

Za zacetek bi bilo dobro, da morda poskusis z OpenGL-om. Delo z DirectX namrec v osnovi zahteva poznavanje mnogih Windows muh, med drugim tudi kar nekaj obvladovanja dela s COM objekti (tako je, ce delas rocno; za .NET pa ne vem; tukaj to po mojem ne bi smelo biti prevec tezko).

Vem pa, da obstajaja sdk (headerji) za delo z DirectX tudi za Delphi (ki je tudi zelo primeren za zacetek).

Obstaja pa tudi Delphi wrapper za DirectX. Videl sem ga ze tudi v akciji in stvar dejansko deluje.
Fallen beyond all grace deeper and deeper
The sound of her own blood dripping
Like sacred tears from a bleeding rose...( Embraced, Within)

Zgodovina sprememb…

Senitel ::

Za delo z DX je bilo potrebno dobro obvladanje raznih fint COM-a tam za časa DX 6... DX9 oziroma D3D9 je kar se tega tiče čist enostaven.

sid_dabster ::

Ok, priznam, nisem noben ekspert za DirectX, vem pa, da je bilo svoj cas programiranje za OpenGL precej enostavnejse.
Fallen beyond all grace deeper and deeper
The sound of her own blood dripping
Like sacred tears from a bleeding rose...( Embraced, Within)

RiNC ::

Kot je že nekdo pred mano napisal, ti tudi jaz svetujem da raje uporabiš OpenGL.
Če bi rad uporabljal kak .NET programski jezik, naprimer C#, tukaj sicer nimaš direktne podpore za OpenGL,
vendar se da to naredit s par kliki.

Ravno sedaj delam en programčič v C# in uporabljam CsGL (OpenGL za C#).
Uporaba je zelo enostavna, vsaj za mene...

Vse potrebno dobiš tukaj.
Downloadaj si:
csgl.1.4.1.dll.zip (tukaj imaš 2 dll-ja ki jih vključiš v svoj projekt)
csgl.1.4.1.src.zip (tukaj pa imaš ogromno osnovnih primerov uporabe)

Če boš imel še kakšno vprašanje samo napiši...
CURIOSITY did not kill the cat...
...it was the BUS!


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Ubuntu 12.04 Precise Pangolin (strani: 1 2 3 421 22 23 24 )

Oddelek: Operacijski sistemi
1194235241 (170375) Zvezdica27
»

RAM problem: OS ne zazna celotne velikosti

Oddelek: Strojna oprema
331679 (1099) svecka
»

Ati radeon, Xorg in Xv

Oddelek: Operacijski sistemi
101439 (1311) MasterMind
»

Gentoo setup problem

Oddelek: Operacijski sistemi
251755 (1579) G2
»

Linux / ATI Radeon / problem z driverji

Oddelek: Operacijski sistemi
131759 (1576) ahac

Več podobnih tem