Blender hakkinda soru

Arkadaslar bildiginiz uzere blender python ile yazildi peki bu uygulamanin 3d render ozellikleri pythonda hangi modul ile destekliyor veya bunu nasil yapiyor

Blender sadece Python ile yaz─▒lmad─▒. Baz─▒ k─▒s─▒mlar─▒ da C ve C++ ile yaz─▒ld─▒ ve yan─▒lm─▒yorsam 3d render bu k─▒s─▒mlardan birisi. Yani program─▒n maj├Âr yerleri C ve C++ ile yaz─▒ld─▒.

@dildeolupbitenÔÇÖin de dedi─či gibi blenderin b├╝y├╝k ├žo─čunlu─ču C++ dili ile yaz─▒lm─▒┼čt─▒r. Bir render program─▒n─▒n sadece Python ile yaz─▒lmas─▒ garip olurdu, ├ž├╝nk├╝ render i┼člemleri performans ister. ─░┼čin iyi taraf─▒ ise Python ile C, C++ gibi diller aras─▒nda haberle┼čmeyi sa─člayabiliyor olmam─▒z. Yani asl─▒nda program─▒n kendisi C++ ile yaz─▒lm─▒┼č, ama Python kodlar─▒ ile gerekli C++ fonksiyonlar─▒n─▒ kullanmay─▒ m├╝mk├╝n hale getirmi┼čler (bir ara sormu┼čtunuz, bu da bir wrapperd─▒r.).

Dedi─čimiz gibi renderin kendisi C++'da hallediliyor, tabii Python ile blender kullan─▒rken kolayl─▒k olsun diye yap─▒lan k├╝t├╝phaneler de var:

Peki python da panda3d gibi mod├╝ller ne ile yaz─▒ld─▒ yada sorum su ┼čekilde python da bir oyun motoru yazilabilirmi sadece python da ama
Veya pyglet bildi─čim kadar─▒yla o python ile yazildi

Evet, Pygletin kendisi tamamen python ile yaz─▒lm─▒┼č.

pyglet is written entirely in pure Python,

Ama render i├žin OpenGL k├╝t├╝phanesini ve GPUÔÇÖyu kullan─▒yor. Yani render i┼či gene C ile yap─▒l─▒yor.

Panda3D oyun motorun da Python ve C++ ile yaz─▒lm─▒┼čt─▒r. Performans─▒n gerekli oldu─ču yerlerde derlenen ve donan─▒m─▒ daha ayr─▒nt─▒l─▒ kontrol edebilen dillerin kullan─▒lmas─▒ ├žok normal. Panda3DÔÇÖnin sitesinden:

Panda3D combines the speed of C++ with the ease of use of Python to give you a fast rate of development without sacrificing on performance.


G├Âr├╝nt├╝ i├žin i┼čletim sistemine ait k├╝t├╝phaneler ile etkile┼čime girilmesi laz─▒m. Bu ya dolayl─▒ ya da do─črudan C, C++ gibi dilleri kullanmay─▒ gerektiriyor. Bunun d─▒┼č─▒n─▒ sadece Python ile yazsan─▒z elinizde yava┼č bir oyun motoru kal─▒r herhalde. Ama 3D renderlerin mant─▒─č─▒n─▒ basit olarak anlamak istiyorsan─▒z bu videoya bakabilirsiniz:

Cok saolun anladim


Neden, kutuphane headerÔÇÖlari .h dosyasi olarak verildigi icin mi?

CÔÇÖnin header dosyalarini okuyabilen ve ABIÔÇÖsini konusabilen bir suru FFI var.

Buradaki C++ baglantisini da anlamadim.

Dolayl─▒dan kast─▒m buydu, arada normal olarak derlenmi┼č bir ┼čeylerin olmas─▒ laz─▒m. Yanl─▒┼čsam d├╝zeltin.

Oray─▒ vermemi┼čim. ┼×imdi ekleyeyim: (http://pyglet.org/ 'dan )

Despite being pure Python, pyglet has excellent performance thanks to advanced batching and GPU rendering.

https://pyglet.readthedocs.io/en/stable/programming_guide/gl.html 'dan:

pyglet provides an interface to OpenGL and GLU. The interface is used by all of pygletÔÇÖs higher-level APIÔÇÖs

Pyglet kendisinin bu k├╝t├╝phaneleri zaten kulland─▒─č─▒n─▒ belirtiyor, ┼čimdi tekrar kontrol ettim OpenGl CÔÇÖde yaz─▒lm─▒┼č. Ben C++ diye hat─▒rl─▒yordum, yanl─▒┼č yazm─▒┼č─▒m.

Yanlis anlasilma varsa duzelteyim diye yazmistim ben de :slight_smile:

OpenGL ilk programlanabilir ekran kartlarinin ciktigi zamandan (90ÔÇÖlar ortasi) beri bir software library degil. Ekran karti firmwareÔÇÖinin bir parcasi; isletim sistemi ve client kutuphaneleri sadece komutlari ve datayi ekran kartindaki implementasyona tasimakla gorevli.

Bu yuzden cogu implementasyonun C ve kartin islemcisinin assemblyÔÇÖsinde yazildigini tahmin etmek yanlis olmaz, ama ekran karti (muhtemelen ekran karti serisi) kadar degisik implementasyonu var.

Bu arada software implementasyonlari da mevcut; linkledigim Mesa, CÔÇÖde yazilmis.

Ortadaki link, C veya ona yakin bir ABIÔÇÖye sahip bir kutuphaneyi dogrudan kullanmamizi saglayan Python ctypes modulu. Bunun disinda (sagdaki) HaskellÔÇÖin interpret edildigini gordum ve Java ve C#'ta DLL cagrilari yaptim. (Hatta JavaÔÇÖda JNIÔÇÖyi ilk kullandigim yer JOGL grafik kutuphanesi idi! Java Ôćĺ JOGL Ôćĺ JNI Ôćĺ OpenGL (client library) Ôćĺ OpenGL (ekran karti))

PowerShellÔÇÖde, hatta onu gectim dandik Windows command lineÔÇÖda ve BAT dosyalarinda bile DLL cagrisi yapmaya izin veren mekanizmalar var. (Parametre paslamaya calisan 92 insanin da kahrindan ├Âlm├╝┼č olmasi baska konu.)

1 Be─čeni

Evet o linke bakt─▒m, bunu da dedi─čim gibi dolayl─▒ bir yol olarak d├╝┼č├╝nm├╝┼čt├╝m.

Onu fark etmemi┼čtim :slightly_smiling_face: