İndir - Gıda Teknolojileri Elektronik Dergisi

TEKNOLOJİK
ARAŞTIRMALAR
Tekstil Teknolojileri Elektronik Dergisi
Cilt: 8, No: 1, 2014 (1-7)
Electronic Journal of Textile Technologies
Vol: 8, No: 1, 2014 (1-7)
www.teknolojikarastirmalar.com
e-ISSN:1309-3991
Makale
(Article)
Üç Boyutlu Modellerin Javascript Programlama Dili Yardımıyla İnternet
Ortamına Alınması
Bekir AKSOY1, Mehmet DAYIK2,
1
2
Süleyman Demirel Üniversitesi Senirkent MYO Bilgisayar Teknolojileri Bölümü Isparta/TÜRKİYE
Süleyman Demirel Üniversitesi Mühendislik Fakültesi Tekstil Mühendisliği Bölümü Isparta/TÜRKİYE
[email protected] [email protected]
Özet
Üç boyutlu model oluşturmak yada üç boyutlu tasarım programları ile oluşturulan modellerin internet sayfasına
aktarılması için kullanılan yapılardan birisi de three.js’dir. Tasarım programları ile çizilmiş olan modellerin
internet sayfasına aktarımı esnasında kullanılan three.js yapısı içerisinde yer alan konumlandırma, döndürme,
boyutlandırma, koordinat sistemi, ışık kaynakları ve kamera yapıları kullanılmıştır. Bu çalışmada tasarım
programları ile çizilmiş olan modellerin three.js yapısı kullanılarak internet ortamına aktarılması sağlanmıştır.
Anahtar Kelimeler: Html 5, jquery, javascript, üç boyutlu model
Dressed in three-dimensional models of textile products displayed on
the internet
Abstract
To create three-dimensional models or models created with three-dimensional design software to the web page of
one of the structures used for transferring the three.js is. The pattern drawn by the design of the program to the
web page that is used during transfer structure located within three.js positioning, rotating, sizing, coordinate
system, the structure of light sources and cameras are used. In this study, drawn with design programs using the
structure of the models three.js have been transferred to the internet environment.
Keywords : : Html 5, jquery, javascript, three-dimensional model
Bu makaleye atıf yapmak için
Aksoy B., Dayık M.,“Üç Boyutlu Modellerin Javascript Programlama Dili Yardımıyla İnternet Ortamına Alınması” Tekstil Teknolojileri Elektronik Dergisi 2014, 8(1) 1-7
How to cite this article
Aksoy B., Dayık M.,“ Dressed in three-dimensional models of textile products displayed on the internet” Electronic Journal of Textile Technologies, 2014, 8 (1) 1-7
1
Aksoy B., Dayık M.
Teknolojik Araştırmalar: TTED 2014 (1) 1-7
1. GİRİŞ
İnternet teknolojilerinde kullanılan yapılardan birisi olan asp.net platformudur. Bu platform içerisinde yer
alan MIME türü dosya kimlik tanımlayıcısı, üç boyutlu modellerin dosya formatlarının internet sayfasına
tanıtılması için kullanılmaktadır. Örneğin bir kullanıcı internet sayfasını ziyaret ettiğinde üç boyutlu
modellerin görüntülenmesi için kullanılan dosya formatlarının MIME türü olarak internet sunucusunda ve
asp.net platformuyla hazırlanan projenin içerisindeki web.config ayar dosyasının içerisinde tanımlı olması
gerekmektedir.
Tasarım programları ile hazırlanan modellerin MIME türü dosya kimlik tanımlayıcısı ile tanımlanıp
internet ortamına alınabilmesi için OBJ (Object) dosya formatı olarak dışarıya alınması gerekmektedir.
OBJ dosya formatı olarak dışarıya alınan model dosyasının yanında, MTL uzantılı bir dosya da üretilir.
Bu dosya üç boyutlu modele ait resim dosyalarının yolunu belirtmek için kullanılmaktadır. Bu MTL
dosyaları içerisinde yer alan resim dosyalarının dizin yolları arasında aynı zamanda kıyafet desenin dizin
yolu da bulunmaktadır.
IIS (Internet Information Service) yapısı kullanılarak üç boyutlu modellerin internet sayfasında
görüntülenmesini sağlamak için; internet sayfasına MIME türü olarak OBJ ve MTL dosya formatlarının
eklenerek IIS (Internet Information Server) yöneticisi çalıştırılması gerekmektedir.
2. IIS (Internet Information Server) MIME Türü Yapılandırması
IIS yapısı kullanılarak üç boyutlu modellerin gösterimini sağlayacak olan internet sayfasına MIME türü
olarak OBJ ve MTL dosya formatlarını eklemek için öncelikle IIS yöneticisi çalıştırılır. Bu işlemi
gerçekleştirmek için Windows işletim sisteminde Başlat – Çalıştır penceresine “inetmgr” komutu
yazılarak tamam butonuna tıklanıldığında Şekil 1’deki görülen IIS yöneticisi penceresi ekrana
gelmektedir.
Şekil 1. IIS MIME Türleri
Üç boyutlu modeli gösterecek olan internet sitesi IIS Yöneticisi penceresindeki sol kısımda bulunan
siteler bölümünden seçilmesi gerekmektedir. Bunun akabinde şekil 1’de kırmızı kare ile gösterilen MIME
türleri butonu tıklandığında şekil 2’deki pencere ekrana gelmektedir.
2
Teknolojik Araştırmalar: TTED 2014 (1) 1-7
Üç Boyutlu Modellerin Javascript Programlama Dili
Şekil 2. IIS Yönetici MIME Türleri Penceresi
Bu pencerede sağ tuş ekle seçeneği seçildiğinde şekil 3’deki gibi bir pencere açılmaktadır.
Şekil 3. MIME Türü Ekleme Penceresi
Bu pencerede “Dosya Adı Uzantısı” olarak üç boyutlu modelimize ait OBJ dosyalarının uzantısı olan
“.obj” ifadesi yazılması gerekmektedir “MIME Türü” olarak ise MIME türünün genel ifadesi olan
“Application/octet-stream” ifadesi yazılıp tamam butonu ile MIME türü IIS’e eklenmektedir. Bu işlem
MTL dosyaları içinde tekrarlanması gerekmektedir. Bu işlemlerden sonra OBJ ve MTL dosyaları IIS’e
eklenerek internet sayfasında kullanılması mümkün olmaktadır.
3. Three.js Projesi ile OBJ ve MTL Dosyalarının İnternet Ortamına Alınması
Üç boyutlu modelin three.js projesi kullanılarak internet ortamına alınabilmesi için aşağıdaki kodlar
three.js projesine eklenmiştir.
<script src="../build/three.js"></script>
Kod satırı ile three.js projemizi html sayfamıza tanıtılması sağlanmaktadır.
<script src="../examples/js/loaders/MTLLoader.js"></script>
kod satırı ile three.js projemize ait olan ve .MTL dosyalarının okunması sağlanmakta ve okutulan
javascript dosyasını oluşturulan e-ticaret sitesine tanıtılmasını sağlanmaktadır.
<script src="../examples/js/loaders/OBJMTLLoader.js"></script>
3
Aksoy B., Dayık M.
Teknolojik Araştırmalar: TTED 2014 (1) 1-7
kod satırı ile three.js oluşturulan e-ticaret sitesindeki projeye ait olan ve .MTL dosyası ve .OBJ
dosyalarını okuyan javascript dosyasının e-ticaret sitesine tanıtımı yapılmıştır.
<script src="../examples/js/Detector.js"></script>
kod satırı ile internet tarayıcısının WebGL desteği olup olmadığının kontrolü yapılmaktadır. Ayrıca
javascript kodlarının bulunduğu javascript dosyasını e-ticaret sitesine tanıtımı gerçekleştirilmektedir.
camera = new THREE.OrthographicCamera(-300, 300, 145, -145, 0.1, 20000);
kod satırı ile hazırlanan three.js projesinin OrthographicCamera özelliğini kullanılmaktadır. Bu
fonksiyona gönderilen değerler sırasıyla sol, sağ, üst, alt, yakınlık ve uzaklık değerlerini temsil
etmektedir.
camera.position.z = 100;
Kod satırı ile kameranın z eksenindeki konumunu ayarlanmaktadır.
scene = new THREE.Scene();
Kod satırı ile yeni bir sahne oluşturulmaktadır.
var directionalLight = new THREE.DirectionalLight( 0xffeedd );
directionalLight.position.set( 1, 1, 1 ).normalize();
Kod satırı ile oluşturulan nesneye (obj) ön tarafına ışık uygulanmasını sağlanmıştır.
scene.add( directionalLight );
Kod satırı ile sahneye ışık eklenmektedir.
var directionalLight2 = new THREE.DirectionalLight( 0xffeedd ); // arka taraf ışıgı
directionalLight2.position.set( -1, -1, -1 ).normalize();
Kod satırı ile oluşturulan nesnenin (obj) arka tarafına ışık uygulanması sağlanmıştır.
scene.add( directionalLight2 );
Kod satırı ile ışık sahneye eklenmektedir. Eğer ışıklarımızı sahneye eklemese idi oluşturulan nesne
ekranda siyah görünüme sahip olurdu.
var loader = new THREE.OBJMTLLoader();
kod satırı ile three.js projesine ait olan bir objmtlloader nesnesi oluşturulmaktadır.
loader.load( '../marv/sisman/l.obj', '../marv/sisman/l.mtl', function ( object ) {
kod satırı ile oluşturulan objmtlloader nesnesine .OBJ dosyasını ve bu .OBJ dosyasına ait olan .MTL
dosyasının yolu belirtilmektedir. Oluşturulan uygulama ile istenilen fonksiyon oluşturulmaktadır.
Buradaki MTL dosyasında gömlek desenini oluşturan resim dosyasının yolu da bulunmaktadır. Gömleğin
desenini değiştirmek istediğimizde .MTL dosyasının içindeki desen resim dosyasının yolunu
değiştirmemiz yeterli olacaktır.
object.position.y = - 70;
kod satırı oluşturulan nesnenin başlangıçtaki y değerini değiştirmek için kullanılmaktadır.
4
Teknolojik Araştırmalar: TTED 2014 (1) 1-7
Üç Boyutlu Modellerin Javascript Programlama Dili
object.scale.set(0.1,0.1,0.1);
Kod satırı ile nesnenin boyutlarını %10 oranında küçültülmektedir. Tasarlanan üç boyutlu model e-ticaret
sitesine
sığamayacak
kadar
büyük
olduğundan
dolayı
küçültme/büyültme
(scale)
işleminin
gerçekleştirilmesi gerekmektedir.
scene.add( object );
renderer = new THREE.WebGLRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
container.appendChild( renderer.domElement );
document.addEventListener( 'mousemove', onDocumentMouseMove, false );
window.addEventListener( 'resize', onWindowResize, false );
camera.aspect = window.innerWidth / window.innerHeight;
Kod satırları, kameranın en-boy oranını hazırlanan e-ticaret sitesinin en-boy oranına göre ayarlama işlemi
gerçekleştirilmektedir.
camera.updateProjectionMatrix();
Kod satırı ile kamerada yapılmış olan değişikliklerin kaydedilmesini sağlanmaktadır.
Var timer = new Date().getTime() * 0.0005;
Kod satırı ile zamanlayıcı (timer) oluşturulmaktadır. Bu zamanlayıcı ile nesnenin e-ticaret sitesi üzerinde
dönüşü sağlanmaktadır.
camera.position.x = Math.floor(Math.cos( timer ) * 200);
Kod satırı ile kameranın x eksenindeki dönüş pozisyonun zamanlayıcıya bağlı olarak dönüşü ile ilgili
ayarlar yapılmaktadır.
camera.position.y += ( - mouseY - camera.position.y ) * .1;
Kod satırında kameranın fare yardımıyla y eksenindeki dönüş pozisyonu ile ilgili ayarlar yapılmaktadır.
camera.position.z = Math.floor(Math.sin( timer ) * 200);
Kod satırı ile kameranın z ekseninde zamanlayıcıya bağlı olarak dönüşü ile ilgili ayarlar yapılmaktadır.
4. OBJ ve MTL Dosyalarının Çalışma Anında Değiştirilmesi
Üç boyutlu modellerin üzerindeki kıyafetin desenlerini değiştirmek için MTL dosyası içerisinde yer alan
resim yollarında değişiklik yapılmak istenildiğinde ve değişiklik yapıldığında internet sayfasının ön
belleğinde değişiklik yapılmadan önceki MTL dosyası mevcut olduğundan, yapılan değişik modele
yansımamaktadır. Bu nedenle MTL dosyalarında değişiklik yapıldığında guid bir sayı üretilip MTL
dosyasının ismine bu guid sayı verilir. Örneğin dosyamız “0c2e8fa9255b412983e9d787ca785d25.mtl”
isimde kaydedilir. Böylece MTL dosyalarına farklı desenler uygulandığında çalışma anında değişiklik
modele yansıtılmış olmaktadır. Bu MTL dosyasının yolunu değiştirebilmek için sayfaya eklenecek olan
5
Aksoy B., Dayık M.
Teknolojik Araştırmalar: TTED 2014 (1) 1-7
OBJ ve MTL dosyasının yolunu içeren javascript kodunu tasarım tarafına literal nesnesi eklenir ve kod
tarafında bu literal nesnesine javascript kodu yazılır. MTL değiştirilmek istenildiğinde bu literal nesnesi
içerisine yazılan javascript kodu güncellenir. Bunu gerçekleştirebilmek için ise aşağıda verilen kod
yazılmıştır.
ltrGoster.Text
+=
"loader.load('/marv/"
+
drpModel.SelectedItem.Text
+
"/"
+
drpBeden.SelectedItem.Text + ".obj', '" + mtl + "', function (object) { \n";
Üç boyutlu modelin OBJ ve MTL dosyalarının IIS’de MIME türü eklenmesinin yanı sıra sitemizin
web.config dosyasında da aşağıdaki kod satırının da eklenerek OBJ ve MTL dosyalarının internet
sayfasına tanıtılması gerekmektedir.
<system.webServer>
<staticContent>
<mimeMap fileExtension=".obj" mimeType="application/octet-stream"/>
<mimeMap fileExtension=".mtl" mimeType="application/octet-stream"/>
</staticContent>
</system.webServer>
Bu işlemlerden sonra şekil 4’de de görüldüğü gibi üç boyutlu modele farklı desenleri giydirmek mümkün
olmaktadır.
Şekil 4. Üç boyutlu modele kıyafet giydirilip desenlerinin değiştirilmesi
5. SONUÇ
Three.js yapısı ile üç boyutlu modeller internet sayfasına alınarak görüntülenmiştir. Böylece çeşitli çizim
programları ile tasarlanmış olan modeller three.js yapısı ile tek bir platformda birleştirilerek internet
tarayıcında görüntülenebildiği görülmüştür. Bu çalışmada three.js projesi javascript yapısını kullandığı
için OBJ dosyaları güncellenerek farklı bedenler, MTL dosyaları güncellenerek de farklı desenler hızlı ve
kolay bir şekilde kullanıcıya gösterilmiştir.
6
Teknolojik Araştırmalar: TTED 2014 (1) 1-7
Üç Boyutlu Modellerin Javascript Programlama Dili
6. KAYNAKLAR
1. http://www.tuncaydemirer.com
2. http://www.threejs.org
3. Algan, S., İstanbul 2012, Her Yönüyle C# 4.0
4. http://www.jquery.com
5. http://www.leventkaragol.com
6. http://learningthreejs.com/
7. http://blog.teamtreehouse.com/the-beginners-guide-to-three-js
8. http://fhtr.org/BasicsOfThreeJS/#1
9. http://stackoverflow.com/questions/18319154/with-three-js-can-i-attach-information-to-an-objectsuch-as-a-url
10. http://www.smartjava.org/content/render-geographic-information-3d-threejs-and-d3js
7