VRML kullanarak kod geliştirme -19- animasyon

Cumartesi, 22 Kasım 2008 23:52 by celebi

Öncelikle animasyon yapımını anlayabilmeniz için VRML ile ilgili önceki yazıları incelemeniz ve bu konuda belli bir birikiminiz olması gerekmektedir.
Billboard ve Anchor gibi nodlar animasyon yapımı için kullanılabilir.
Cisimleri hareket ettirmek, döndürmek, yakıp söndürmek, cisimlerin boyutlarını değiştirmek suretiyle animasyonlar oluşturabiliriz.


Animasyon yapabilmemiz için:

-bir tetikleyiciye

-bir zamanlayıcıya

-bir dizi olaya ihtiyacımız olacak

 


Bir olay, nodlar arasında gönderilen birmesaj olarak düşünülebilir.

Bir olayın:
-bir değeri (örneğin bir büyüme değeri)
-bir de zaman aralığı (ne zaman nodlar arasında mesaj gönderilmeye başlandı)
vardır.


Bu kısımlarda pek bir şey anlayamayabilirsiniz, sabredin ilerleyen kısımlarda verdiğim örneklerle konuyu iyice kavrayacaksınız.

VRML kullanarak kod geliştirme -18 -primitif şekilleri kullanarak cami yapmak

Pazartesi, 17 Kasım 2008 14:24 by celebi

Basit şekiller kullanarak 3 boyutlu VRML cami yaptığım kodu aşağıda verdim: 

 

#VRML V2.0 utf8
##minare1#######
# minare
Transform {
    translation 0.0 10.0 0.0
    children [
        DEF minare Shape {
            appearance DEF Beyaz Appearance {
                material Material { }
            }
            geometry Cylinder {
                radius 1.0
                height 20.0
                top TRUE
            }
        }
    ]
}
#minher
Transform {
    translation 0.0 15.0 0.0
    children [
       Shape {
            appearance Appearance {
                material Material { diffuseColor  1.0 1.0 1.0 }
            }
            geometry Cylinder {
                radius 1.5
                height 3.0
                top TRUE
            }
        }
    ]
}
#tavan
Transform {
    translation 0.0 22.0 0.0
    children [
        DEF tavan Shape {
    appearance Appearance {
        material Material { }
    }
    geometry Cone {
        height 4.0
        bottomRadius 1.0
        bottom FALSE
        side TRUE
    }
}

    ]
}


###############

##minare2#######
# minare
Transform {
    translation 20.0 10.0 0.0
    children [
        DEF minare Shape {
            appearance DEF Beyaz Appearance {
                material Material { }
            }
            geometry Cylinder {
                radius 1.0
                height 20.0
                top TRUE
            }
        }
    ]
}
#minher
Transform {
    translation 20.0 15.0 0.0
    children [
       Shape {
            appearance Appearance {
                material Material { diffuseColor  1.0 1.0 1.0 }
            }
            geometry Cylinder {
                radius 1.5
                height 3.0
                top TRUE
            }
        }
    ]
}
#tavan
Transform {
    translation 20.0 22.0 0.0
    children [
        DEF tavan Shape {
    appearance Appearance {
        material Material { }
    }
    geometry Cone {
        height 4.0
        bottomRadius 1.0
        bottom FALSE
        side TRUE
    }
}

    ]
}

###############

##minare3#######
# minare
Transform {
    translation 0.0 10.0 -20.0
    children [
        DEF minare Shape {
            appearance DEF Beyaz Appearance {
                material Material { }
            }
            geometry Cylinder {
                radius 1.0
                height 20.0
                top TRUE
            }
        }
    ]
}
#minher
Transform {
    translation 0.0 15.0 -20.0
    children [
       Shape {
            appearance Appearance {
                material Material { diffuseColor  1.0 1.0 1.0 }
            }
            geometry Cylinder {
                radius 1.5
                height 3.0
                top TRUE
            }
        }
    ]
}
#tavan
Transform {
    translation 0.0 22.0 -20.0
    children [
        DEF tavan Shape {
    appearance Appearance {
        material Material { }
    }
    geometry Cone {
        height 4.0
        bottomRadius 1.0
        bottom FALSE
        side TRUE
    }
}

    ]
}


###############

##minare4#######
# minare
Transform {
    translation 20.0 10.0 -20.0
    children [
        DEF minare Shape {
            appearance DEF Beyaz Appearance {
                material Material { }
            }
            geometry Cylinder {
                radius 1.0
                height 20.0
                top TRUE
            }
        }
    ]
}
#minher
Transform {
    translation 20.0 15.0 -20.0
    children [
       Shape {
            appearance Appearance {
                material Material { diffuseColor  1.0 1.0 1.0 }
            }
            geometry Cylinder {
                radius 1.5
                height 3.0
                top TRUE
            }
        }
    ]
}
#tavan
Transform {
    translation 20.0 22.0 -20.0
    children [
        DEF tavan Shape {
    appearance Appearance {
        material Material { }
    }
    geometry Cone {
        height 4.0
        bottomRadius 1.0
        bottom FALSE
        side TRUE
    }
}

    ]
}

#ana gövde
Transform {
    translation 10.5 5.0 -10.5
    children [
        DEF Main Shape {
           appearance Appearance { material Material { diffuseColor  1.0 1.0 1.0  } }

            geometry Box { size 15.0 10.0 15.0 }
        }
    ]
}




#kubbe
Transform {
    translation 10.5 8.0 -10.5
    children [
        Shape {
    appearance Appearance {
        material Material { diffuseColor  1.0 1.0 0.0 }
    }
    geometry Sphere {
        radius 5.0
    }
}
    ]
}

#kapı
Transform {
    translation 10 1.5 -3.0
    children [
        DEF kapı Shape {
           appearance Appearance { material Material { diffuseColor  0.1 0.1 0.1  } }

            geometry Box { size 2.0 3.0 0.01 }
        }
    ]
}
#kubbe kapı
Transform {
    translation 10.0 3.0 -3.0
    children [
        Shape {
    appearance Appearance {
        material Material { diffuseColor  0.1 0.1 0.1 }
    }
    geometry Sphere {
        radius 1.0
    }
}
    ]
}

#sol pencere
Transform {
    translation 5.0 5.0 -3.0
    children [
        DEF kapı Shape {
           appearance Appearance { material Material { diffuseColor  0.1 0.1 0.1  } }

            geometry Box { size 2.0 3.0 0.01 }
        }
    ]
}

#sağ pencere
Transform {
    translation 15.0 5.0 -3.0
    children [
        DEF kapı Shape {
           appearance Appearance { material Material { diffuseColor  0.1 0.1 0.1  } }

            geometry Box { size 2.0 3.0 0.01 }
        }
    ]
}

 

Yukarıdaki kodu bir text dosyası içersine kopyalayıp, "cami.wrl" adıyla ,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.


VRML kullanarak kod geliştirme -17 -primitif şekilleri kullanarak araba yapmak

Pazartesi, 17 Kasım 2008 13:45 by celebi

Bu yazıda primitif şekilleri kullanarak basit bir araba nasıl yapılır bunu anlatacağım: 

 

öncelikle arabanın bir tekerini yapalım:

#VRML V2.0 utf8 

Transform {
    children [
        DEF Teker Shape {
            appearance DEF Grey Appearance {
                material Material {diffuseColor  0.8 0.8 0.8 }
            }
            geometry Cylinder {
                radius 0.3
                height 0.1
                top TRUE
            }
        }
    ]
}

Yukarıdaki kodu bir text dosyası içersine kopyalayıp, "teker.wrl" adıyla,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz. 

 

 

şimdi de arabanın bir farını yapalım: 

 

#VRML V2.0 utf8

#far

Transform {
rotation     1.0 0.0 0.0 -1.57
    children [
        DEF Far Shape {
            appearance Appearance {
                material Material {
                diffuseColor  1.0 1.0 0.0
            }
           }
            geometry Cylinder {
                radius 0.1
                height 0.1
                top TRUE
            }
        }
    ]
}


Yukarıdaki kodu bir text dosyası içersine kopyalayıp, "far.wrl" adıyla,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.

 

Şimdi de arabanın bir penceresini yapalım:

 

#VRML V2.0 utf8

#pencere
Transform {
     rotation   1.0 0.0 0.0 1.57
    children [
      Shape {
    appearance Appearance { material Material { diffuseColor 1.0 1.0 1.0   } }    
            geometry Box { size 0.4 0.01 0.9 }
        }
    ]
}

 Yukarıdaki kodu bir text dosyası içersine kopyalayıp,"pencere.wrl" adıyla, kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.

 

Şimdi de kapıyı yapalım:

 #VRML V2.0 utf8

# kapı
Transform {
   rotation     0.0 0.1 0.0 1.57
    translation 0.0 0.6 0.5
    children [
      Shape {
    appearance Appearance { material Material {  } }     
            geometry Box { size 0.01 0.4 1.5 }
        }
    ]
}

Yukarıdaki kodu bir text dosyası içersine kopyalayıp,"kapi.wrl" adıyla, kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.

 

Şimdiden arabanın alt gövdesini yapalım: 

#VRML V2.0 utf8

#alt gövde
Transform {
    translation 0.0 0.6 0.0
    children [
        DEF Bonnet Shape {
           appearance Appearance { material Material { diffuseColor  1.0 0.0 0.0  } }

            geometry Box { size 4.0 0.6 1.0 }
        }
    ]
}

 

Yukarıdaki kodu bir text dosyası içersine kopyalayıp, "altgovde.wrl" adıyla ,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.

Şimdi de arabanın üst gövdesini yapalım: 

# üst gövde

Transform {
    translation 0.0 1.3 0.0
    children [
      Shape {
    appearance Appearance { material Material { diffuseColor 0.0 1.0 1.0   } }    
            geometry Box { size 2.0 0.8 1.0 }
        }
    ]
}

Yukarıdaki kodu bir text dosyası içersine kopyalayıp,  "ustgovde.wrl" adıyla,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.

Şimdi de plakalığı yapalım: 

 

#VRML V2.0 utf8

# plakalık
Transform {
    rotation     1.0 0.0 0.0 1.57
    children [
      Shape {
    appearance Appearance { material Material { diffuseColor  1.0 1.0 1.0  } }    
            geometry Box { size 0.2 0.05 0.7 }
        }
    ]
}

Yukarıdaki kodu bir text dosyası içersine kopyalayıp, "plakalik.wrl" adıyla ,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.

 

Şimdi de plakalık üzerine yazılacak plakayı oluşturalım:

Transform {
    children [
      Shape {
    appearance Appearance { material Material { diffuseColor  0.0 0.0 0.0  } }    
            geometry Text {
        string [ "34 MK 2005"]
    fontStyle FontStyle {
            size    0.1
            spacing 0.1
    style "BOLD"
        }

      }

        }
    ]
}

 


Yukarıdaki kodu bir text dosyası içersine kopyalayıp, plaka.wrl" adıyla ,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.



 

ŞİMDİ DE TÜM YAPTIĞIMIZ NESNELERİ BİR KODUN İÇERSİNDE, UYGUN RENKLERLE, UYGUN KOORDİNATLARA YERLEŞTİRELİM:

#VRML V2.0 utf8

# arka sol Teker
Transform {
    translation -1.5 0.3 -0.5
    rotation     1.0 0.0 0.0 1.57
    children [
        DEF Teker Shape {
            appearance DEF Grey Appearance {
                material Material {diffuseColor  0.8 0.8 0.8 }
            }
            geometry Cylinder {
                radius 0.3
                height 0.1
                top TRUE
            }
        }
    ]
}

# sol ön Teker

Transform {
rotation     1.0 0.0 0.0 1.57
    translation 1.5 0.3 -0.5
    children [ USE Teker ]
}
#sağ ön Teker
Transform {
rotation     1.0 0.0 0.0 1.57
    translation 1.5 0.3 0.5
    children [ USE Teker ]
}
#sol arka Teker
Transform {
rotation     1.0 0.0 0.0 1.57
    translation -1.5 0.3 0.5
    children [ USE Teker ]
}

#far1
Transform {
    translation  2.0 0.6 0.3
    rotation     0.0 0.0 -1.0 -1.57
    children [
        DEF Far Shape {
            appearance Appearance {
                material Material {
          diffuseColor  1.0 1.0 0.0
}
            }
            geometry Cylinder {
                radius 0.1
                height 0.1
                top TRUE
            }
        }
    ]
}
# far2
Transform {
rotation     0.0 0.0 -1.0 -1.57
    translation 2.0 0.6 -0.3
    children [ USE Far ]
}







#alttaki ilk kutu
Transform {
    translation 0.0 0.6 0.0
    children [
        DEF Bonnet Shape {
           appearance Appearance { material Material { diffuseColor  1.0 0.0 0.0  } }

            geometry Box { size 4.0 0.6 1.0 }
        }
    ]
}


# üstteki kutu
Transform {
    translation 0.0 1.3 0.0
    children [
      Shape {
    appearance Appearance { material Material { diffuseColor 0.0 1.0 1.0   } }     
            geometry Box { size 2.0 0.8 1.0 }
        }
    ]
}

# ön pencere
Transform {
     rotation     0.0 0.0 -0.1 1.57
    translation 1.0 1.1 0.0
    children [
      Shape {
    appearance Appearance { material Material { diffuseColor 1.0 1.0 1.0   } }     
            geometry Box { size 0.4 0.01 0.9 }
        }
    ]
}
# sağ pencere
Transform {
   rotation     0.0 0.1 0.0 1.57
    translation 0.0 1.1 0.5
    children [
      Shape {
    appearance Appearance { material Material { diffuseColor 1.0 1.0 1.0   } }     
            geometry Box { size 0.01 0.4 1.9 }
        }
    ]
}
# sol pencere
Transform {
   rotation     0.0 0.1 0.0 -1.57
    translation 0.0 1.1 -0.5
    children [
      Shape {
    appearance Appearance { material Material { diffuseColor 1.0 1.0 1.0   } }     
            geometry Box { size 0.01 0.4 1.9 }
        }
    ]
}




# sağ kapı
Transform {
   rotation     0.0 0.1 0.0 1.57
    translation 0.0 0.6 0.5
    children [
      Shape {
    appearance Appearance { material Material { diffuseColor 0.0 0.0 0.0   } }     
            geometry Box { size 0.01 0.4 1.5 }
        }
    ]
}

# sol kapı
Transform {
   rotation     0.0 0.1 0.0 -1.57
    translation 0.0 0.6 -0.5
    children [
      Shape {
    appearance Appearance { material Material { diffuseColor 0.0 0.0 0.0   } }     
            geometry Box { size 0.01 0.4 1.5 }
        }
    ]
}

# plaka
Transform {
    rotation     0.0 0.0 -1.0 1.57
    translation -2.0 0.6 0.0
    children [
      Shape {
    appearance Appearance { material Material { diffuseColor  1.0 1.0 1.0  } }     
            geometry Box { size 0.2 0.05 0.7 }
        }
    ]
}

Transform {
    translation -2.05 0.6 -0.25
    rotation     0.0 -1.0 0.0 1.57
    children [
      Shape {
    appearance Appearance { material Material { diffuseColor  0.0 0.0 0.0  } }     
            geometry Text {
        string [ "34 MK 2005"]
    fontStyle FontStyle {
            size    0.1
            spacing 0.1
    style "BOLD"
        }

      }

        }
    ]
}

Yukarıdaki kodu bir text dosyası içersine kopyalayıp,  "araba.wrl" adıyla ,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.

 

VRML kullanarak kod geliştirme -16

Pazartesi, 17 Kasım 2008 11:52 by celebi

DEF sentaksı bir noda bir isim vermemizi sağlar, daha sonra aynı adla bu nodu başka bir yerde kullanabiliriz.

Örnek kod parçası:


Shape {
    appearance Appearance {
        material DEF RENK Material {
            diffuseColor 1.0 0.0 0.0
        }
    }
    geometry . . .
}

Yukarıdaki kod parçasında kırmızı rengi belirten material noduna RENK adını vermiş oldum, kodun farklı bölgelerinde kırmızı rengi kullanmak istersem RENK adını kullanmam benim için yeterli olacak.

DEF sentaksının kullanımı:

-DEF her zaman büyük harflerle yazılmalıdır.
-DEF ile belirteceğiniz isimler rakamlar ve harflerden oluşabilir
-DEF ile belirteceğiniz isimden dosyada bir tane olmalı ve yalnızca belirttiği nod için kullanılmalı.

USE sentaksı daha önceden DEF ile isimlendirilmiş bir özelliği kullanmamıza yarar.
Örnek kod parçası:


Shape {
    appearance Appearance {
        material USE RENK
    }
    geometry . . .
}

Yukarıdaki kod parçasında daha önceden DEF kullanarak RENK olarak isimlendirdiğimiz kırmızı rengi, USE sentaksı burda da kullanabilmemizi sağlıyor.

USE sentaksının kullanımı:

-USE her zaman büyük harflerle yazılmalıdır.
-USE, DEF ile daha önceden isimlendirilmiş bir nod örneğini tekrar kullanmamızı sağlar.
-USE ile kullanılan nod aynı dosya içinde DEF ile isimlendirilmelidir.

Nodları DEF ile isimlendirip USE ile tekrar kullanmanın ne gibi yararları vardır?

-Kod yazdığımız VRML dosyasının boyutunda tasarruf sağlamış oluyoruz.
-Aynı özelliklere sahip şekillerin herhangibir özelliğinde toplu değişim yapmak istersek bunu kolaylıkla başarabiliyoruz.
-Tarayıcının hızlı işlem yapması sağlanmış oluyor.

Daha önceden göstermiş olduğum mutfak masası örneğini USE ve DEF kullanarak yapmış olsaydık ne olurdu hep birlikte bakalım:

Masayı ve sandalyeyi yine önceki seferdeki gibi oluşturalım:

#VRML V2.0 utf8
#  Masanın üstü
Transform {
    translation 0.0 0.615 0.0
    children [
    Shape {
        appearance DEF Kahverengi Appearance {
        material Material {
            diffuseColor 0.6 0.35 0.0
        }
        }
        geometry Cylinder {
        radius 0.7
        height 0.03
        }
    }
    ]
}

#
#  Masa Bacağı
#
Transform {
    translation 0.0 0.3075 0.0
    children [
    Shape {
        appearance USE Kahverengi
        geometry Box {
        size 0.09 0.57 0.09
        }
    }
    ]
}

#
#  Masanın bacak dayanağı
#
Transform {
    translation 0.0 0.015 0.0
    children [
    Shape {
        appearance USE Kahverengi
        geometry Box {
        size 0.5 0.03 0.5
        }
    }
    ]
}
Transform {
    translation 0.0 0.045 0.0
    children [
    Shape {
        appearance USE Kahverengi
        geometry Box {
        size 0.35 0.03 0.35
        }
    }
    ]
}

Yukarıdaki kodu bir text dosyası içersine kopyalayıp, "masa.wrl" adında ,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.


 

Sonra da başka bir dosyada yine bir önceki konuda anlattığım şekilde 1 tane sandalye oluşturulur.

#VRML V2.0 utf8
#  Sandalyenin oturulacak yeri
Transform {
    translation 0.0 0.5 0.0
    children [
    Shape {
        appearance DEF Kahverengi Appearance {
        material Material {
            diffuseColor 0.6 0.35 0.0
        }
        }
        geometry Box {
        size 0.39 0.03 0.41
        }
    }
    ]
}

#
#  Sandalye Bacakları


Transform {
    translation 0.1575 0.2485 0.1575
    children [
    DEF Bacak Shape {
        appearance USE Kahverengi
        geometry Box {
        size 0.03 0.497 0.03
        }
    }
    ]
}
Transform {
    translation -0.1575 0.2485 0.1575
    children [ USE Bacak]
}
Transform {
    translation -0.1575 0.2485 -0.1575
    children [ USE Bacak]
}
Transform {
    translation 0.1575 0.2485 -0.1575
    children [ USE Bacak]
}

#
#  Sandalyenin arkası
#
Transform {
    translation 0.1875 0.5 0.0
    rotation 0.0 0.0 1.0 -0.17
    children [
    Transform {
        translation 0.0 0.54 0.0
        children [
        Shape {
            appearance USE Kahverengi
            geometry Box {
            size 0.06 0.17 0.43
            }
        }
        ]
    }

    Transform {
        translation 0.0 0.2275 0.0
        children [
        DEF ArkaDirek Shape {
            appearance USE Kahverengi
            geometry Box {
            size 0.02 0.455 0.02
            }
        }
        ]
    }
    Transform {
        translation 0.0 0.2275 -0.083
        children [ USE ArkaDirek ]
    }
    Transform {
        translation 0.0 0.2275 0.083
        children [ USE ArkaDirek ]
    }
    Transform {
        translation 0.0 0.2275 -0.166
        children [ USE ArkaDirek ]
    }
    Transform {
        translation 0.0 0.2275 0.166
        children [ USE ArkaDirek ]
    }
    ]
}

Yukarıdaki kodu bir text dosyası içersine kopyalayıp, "sandalye.wrl" adında ,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.

 

 
 

Daha önceden mutfak masası (masa ve sandalyelerin birleşimi) için yazdığımız kodu bu sefer USE ve DEF kullarak tekrar oluşturalım:

MUTFAK MASASI:

Inline { url "masa.wrl" }
Transform {
    translation 0.95 0.0 0.0
    children DEF Sandalye Inline { url "sandalye.wrl" }
}
Transform {
    translation -0.95 0.0 0.0
    rotation 0.0 1.0 0.0 3.14
    children USE Sandalye
}
Transform {
    translation 0.0 0.0 0.95
    rotation 0.0 1.0 0.0 -1.57
    children USE Sandalye
}
Transform {
    translation 0.0 0.0 -0.95
    rotation 0.0 1.0 0.0 1.57
    children USE Sandalye
}

ve sonuç yine aynı olacaktır...

Yukarıdaki kodu bir text dosyası içersine kopyalayıp, istediğiniz bir isimle ama ".wrl" uzantılı ,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.

 

VRML kullanarak kod geliştirme -15

Pazartesi, 17 Kasım 2008 11:20 by celebi

Inline Örneği

Inline grup nodunu kullanarak mutfak masası oluşturma:


Önce bir VRML dosyası içersinde masa oluşturulur:


#VRML V2.0 utf8
#  Masanın üstü
Transform {
    translation 0.0 0.615 0.0
    children [
    Shape {
        appearance DEF Kahverengi Appearance {
        material Material {
            diffuseColor 0.6 0.35 0.0
        }
        }
        geometry Cylinder {
        radius 0.7
        height 0.03
        }
    }
    ]
}

#
#  Masa Bacağı
#
Transform {
    translation 0.0 0.3075 0.0
    children [
    Shape {
        appearance USE Kahverengi
        geometry Box {
        size 0.09 0.57 0.09
        }
    }
    ]
}

#
#  Masanın bacak dayanağı
#
Transform {
    translation 0.0 0.015 0.0
    children [
    Shape {
        appearance USE Kahverengi
        geometry Box {
        size 0.5 0.03 0.5
        }
    }
    ]
}
Transform {
    translation 0.0 0.045 0.0
    children [
    Shape {
        appearance USE Kahverengi
        geometry Box {
        size 0.35 0.03 0.35
        }
    }
    ]
}

Yukarıdaki kodu bir text dosyası içersine kopyalayıp, "masa.wrl" adında ,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.
 

 

 

Sonra da başka bir dosyada 1 tane sandalye oluşturulur.

#VRML V2.0 utf8
#  Sandalyenin oturulacak yeri
Transform {
    translation 0.0 0.5 0.0
    children [
    Shape {
        appearance DEF Kahverengi Appearance {
        material Material {
            diffuseColor 0.6 0.35 0.0
        }
        }
        geometry Box {
        size 0.39 0.03 0.41
        }
    }
    ]
}

#
#  Sandalye Bacakları


Transform {
    translation 0.1575 0.2485 0.1575
    children [
    DEF Bacak Shape {
        appearance USE Kahverengi
        geometry Box {
        size 0.03 0.497 0.03
        }
    }
    ]
}
Transform {
    translation -0.1575 0.2485 0.1575
    children [ USE Bacak]
}
Transform {
    translation -0.1575 0.2485 -0.1575
    children [ USE Bacak]
}
Transform {
    translation 0.1575 0.2485 -0.1575
    children [ USE Bacak]
}

#
#  Sandalyenin arkası
#
Transform {
    translation 0.1875 0.5 0.0
    rotation 0.0 0.0 1.0 -0.17
    children [
    Transform {
        translation 0.0 0.54 0.0
        children [
        Shape {
            appearance USE Kahverengi
            geometry Box {
            size 0.06 0.17 0.43
            }
        }
        ]
    }

    Transform {
        translation 0.0 0.2275 0.0
        children [
        DEF ArkaDirek Shape {
            appearance USE Kahverengi
            geometry Box {
            size 0.02 0.455 0.02
            }
        }
        ]
    }
    Transform {
        translation 0.0 0.2275 -0.083
        children [ USE ArkaDirek ]
    }
    Transform {
        translation 0.0 0.2275 0.083
        children [ USE ArkaDirek ]
    }
    Transform {
        translation 0.0 0.2275 -0.166
        children [ USE ArkaDirek ]
    }
    Transform {
        translation 0.0 0.2275 0.166
        children [ USE ArkaDirek ]
    }
    ]
}

Yukarıdaki kodu bir text dosyası içersine kopyalayıp, "sandalye.wrl" adında ,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.



Masa ve sandalyelerden oluşan bir grubu oluşturmak için "Inline" grup nodu kullanılarak yeni bir .wrl dosyası oluşturulur:

#VRML V2.0 utf8
#  Masa
#
Inline { url "masa.wrl" }

#
#  Chairs
#
Transform {
    translation 0.95 0.0 0.0
    children DEF Sandalye Inline { url "sandalye.wrl" }
}
Transform {
    translation -0.95 0.0 0.0
    rotation 0.0 1.0 0.0 3.14
    children USE Sandalye
}
Transform {
    translation 0.0 0.0 0.95
    rotation 0.0 1.0 0.0 -1.57
    children USE Sandalye
}
Transform {
    translation 0.0 0.0 -0.95
    rotation 0.0 1.0 0.0 1.57
    children USE Sandalye
}




Yukarıdaki kodu bir text dosyası içersine kopyalayıp, istediğiniz bir isimle ama ".wrl" uzantılı ,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.

VRML kullanarak kod geliştirme -14

Pazartesi, 17 Kasım 2008 11:04 by celebi

Kompleks cisimleri oluşturabilmek için basit şekilleri gruplandırabilir ve yaptığınız komplekse şekli daha sonra tekrar kullanabilirsiniz.
Bu özelliği uygulayabilmeniz için VRML size birkaç farklı gruplama nodlarını sunuyor.Bunlar:


Group       { . . . }
Switch      { . . . }
Transform   { . . . }
Billboard   { . . . }
Anchor      { . . . }
Inline      { . . . }

-"Group" grup nodu, temel bir gruplama nodudur."Group" grup nodu içindeki her bir çocuk nod görüntülenecektir.

Sentaksı:

Group {
    children [ . . . ]
}

-"Switch" grup nodu, içindeki çocuk nodlardan bir tanesini görüntülemeye yarar. Bir çocuk nodu seçebilmek için, o çocuk nodu 0 olarak numaralandırırız.

Sentaks:

Switch {
    whichChoice 0
    choice [ . . . ]
}

-Transform grup nodu kendi koordinat düzleminde bir grup nodu oluşturur.


Sentaksı:


Transform {
    translation 0.0 0.0 0.0
    rotation    0.0 1.0 0.0 0.0
    scale       1.0 1.0 1.0
    children [ . . . ]
}


"Billboard" grup nodu, özel bir koordinat sistemine sahip bir grup nod oluşturur. Transform grup nodu içindeki her bir çocuk nod görüntülenir.

Sentaksı:

Billboard {
    axisOfRotation 0.0 1.0 0.0
    children [ . . . ]
}

"Anchor" nodu tıklanabilir bir grup nod oluşturur.
"Anchor" grup nodu içindeki her bir çocuk nod görüntülenir.
"Anchor" grup nodu içindeki bir çocuk noda tıklanıldığında belirlenen bir adrese (url) gidilir.
"description" alanı, nodu isimlendirmeye yarar.

Sentaks:

Anchor {
    url "gevisgetiren.wrl"
    description "Gevis Getiren Site"
    children [ . . . ]
}

"Inline" grup nodu, seçilen bir adresi(url) dosyadan okur.
"Inline" grup nodu her çocuk nodu gösterir.

Sentaks:


Inline {
    url "masa.wrl"
}

VRML kullanarak kod geliştirme -13

Pazartesi, 17 Kasım 2008 10:38 by celebi

Primitif şekillerin varsayılan rengi beyazdır.

"Appearance" nodu tüm şeklin görüntüsünü tarif eder.
Aşağıdaki kod parçasonda "Appearance" nodunun sentaksını görüyorsunuz.


Shape {
    appearance Appearance {
        material . . .
    }
    geometry . . .
}



Aşağıdaki kod parçasında "Material" nodununun sentaksını görüyorsunuz.


Shape {
    appearance Appearance {
        material Material {
            diffuseColor  0.8 0.8 0.8
            emissiveColor 0.0 0.0 0.0
            transparency  0.0
        }
    }
    geometry . . .
}


-diffuseColor alanı, cismin ana rengini verir.
-emissiveColor alanı, emisyon rengini ayarlar.
-transparency alanı, cismin matlığını ayarlar.

Renkler genel olarak kırmızı, yeşil ve mavi ışığın farklı oranlardaki karışımlarından oluşur.
Aşağıdaki tabloda görüldüğü üzere renkler 0.0 ile 1.0 arasında renk değerleri alabilmektedirler:


RENK             Kırmızı    Yeşil    Mavi     Sonuç

--------------------------------------------------------------------------------
Beyaz            1.0         1.0       1.0      (beyaz)
Kırmızı           1.0         0.0       0.0      (kırmızı)
Sarı               1.0         1.0       0.0      (sarı)
Siyan             0.0         1.0       1.0      (siyan)
Kahverengi     0.5         0.2       0.0      (kahverengi)

 

"Appearance"  nodu ile ilgili örnek bir kod verecek olursak:

#VRML V2.0 utf8


DEF Giris Viewpoint {
    position 0.0 1.66 15.0
    description "Giris Goruntusu"
}

NavigationInfo {
    type [ "EXAMINE", "ANY" ]
    headlight TRUE
}

#
#  Tablolar
#
# Beyaz tablo (gölgeli)
Transform {
    translation 0.0 2.0 4.0
    children [
    Shape {
        appearance Appearance {
        material Material {
            diffuseColor 1.0 1.0 1.0
        }
        }
        geometry DEF Tablo Box {
        size 2.0 4.0 0.3
        }
    }
    ]
}

# Kırmızı tablo (emisyon)
Transform {
    translation 0.0 2.0 0.0
    children [
    Shape {
        appearance Appearance {
        material Material {
            diffuseColor  0.0 0.0 0.0
            emissiveColor 1.0 0.0 0.0
        }
        }
        geometry DEF Tablo Box {
        size 2.0 4.0 0.3
        }
    }
    ]
}

# Yeşil Tablo (gölgeli + saydam)
Transform {
    translation -3.0 2.0 2.0
    children [
    Shape {
        appearance Appearance {
        material Material {
            diffuseColor 0.0 1.0 0.0
            transparency 0.5
        }
        }
        geometry USE Tablo
    }
    ]
}

# Mavi Tablo (gölgeli + emisyon + saydam)
Transform {
    translation 4.0 2.0 -2.0
    children [
    Shape {
        appearance Appearance {
        material Material {
            diffuseColor 0.2 0.2 0.2
            emissiveColor 0.0 0.0 0.8
            transparency 0.25
        }
        }
        geometry USE Tablo
    }
    ]
}

# Sarı tablo (gölgeli + saydam)
Transform {
    translation 4.5 2.0 3.0
    children [
    # Dış kısım
    Shape {
        appearance Appearance {
        material Material {
            diffuseColor 1.0 1.0 0.0
            transparency 0.5
        }
        }
        geometry USE Tablo
    }
    ]
}

# Siyan tablo (gölgeli)
Transform {
    translation -3.5 2.0 -5.0
    children [
    Shape {
        appearance Appearance {
        material Material {
            diffuseColor 0.0 1.0 1.0
        }
        }
        geometry USE Tablo
    }
    ]
}

# magenta tablo (gölgeli + emisyon)
Transform {
    translation 2.0 2.0 -6.0
    children [
    Shape {
        appearance Appearance {
        material Material {
            diffuseColor 0.5 0.0 0.0
            emissiveColor 0.5 0.0 0.5
        }
        }
        geometry USE Tablo
    }
    ]
}

Yukarıdaki kodu bir text dosyası içersine kopyalayıp, istediğiniz bir isimle ama ".wrl" uzantılı ,kayıt türü "tüm dosyalar", kodlama ANSI seçerek kaydediniz. Bu dosyayı eğer cortona tarayıcısı sizde yüklüyse açabilir ve aşağıdaki şekilde 3 boyutlu tasarımınızı görebilirsiniz. Aşağıda sadece yukarıdaki kodun çalışması sonrası oluşan 3 boyutlu cismin tek açıdan görüntüsünü verdim eğer cortona tarayıcısını kullanırsanız, cisme istediğiniz açıdan yaklaşır, cismi farklı açılardan görebilirsiniz.


VRML kullanarak kod geliştirme -12

Pazartesi, 17 Kasım 2008 10:27 by celebi

-VRML dosyalarında oluşturulan şekiller, dosyanın koordinat sistemi baz alınarak oluşturulur.
Eğer özellikle cisimlerin koordinatlarını belirtmezsek oluşturduğumuz cisimler, VRML dünyasının orijininde oluşacaktır.
Ama her zaman her şekli VRML dünyanın orijininde oluşturmak istemeyiz. Bir cismi orijin dışında bir yerde oluşturmak için Transform nodu kullanılır.

Transform grup nodunu kullanarak
,
-cisimlerin yerlerini değiştirebilir
-cisimleri çevirebilir
-cisimlerin boyutlarını değiştirebiliriz.

Transform grup nodunun kullanımı (sentaks) aşağıdaki kod parçasında verilmiştir:
Transform {
    translation . . .
    rotation    . . .
    scale       . . .
    children  [ . . . ]
}

"children" alanı, bir ya da birden fazla nodu içerir

-"translation" alanı, bir cismin VRML dünyasındaki pozisyonunu ayarlar.
-"rotation" alanı, cismi bir eksen etrafında belli bir radyan açısı kadar döndürmeyi sağlar.
radyan = derece / 180 * 3.14 ile bulunur.


örneğin aşağıdaki örnek kodda bir cismi Z ekseni etrafında 0.52 radyan döndürüyoruz:

Transform {
    #        X   Y   Z    Angle
    rotation 0.0 0.0 1.0  0.52
    children [ . . . ]
}

X,Y,Z Eksenlerinde dönme

--------------------------------------------------------------------------------
 
X-Axis     1.0     0.0     0.0
Y-Axis     0.0     1.0     0.0
Z-Axis     0.0     0.0     1.0

-Artı işaretli "rotation" değerleri saatin dönme yönünün tersi yönündedir.
-"scale" alanı bir cismin ebatlarını ayarlamak için kullanılır.


Aşağıdaki örnek kodda cismin yeni ebatları, eskisinin yarısı kadardır:

Transform {
    #     X   Y   Z
    scale 0.5 0.5 0.5
    children [ . . . ]
}

 

Aşağıdaki örnekte "scale","rotation","translation" alanları sırayla çalışır.
Yani önce cismin boyutu yarısına düşer, sonra cisim z ekseni etrafında 0.52 radyan(yaklaşık 30 derece) saat yönünün tersi yönünde döndürülür sonra da cismin merkezi 2.0, 0.0, 0.0 koordinatlarına yerleştirilir.

Transform {
    translation 2.0 0.0 0.0
    rotation 0.0 0.0 1.0  0.52
    scale 0.5 0.5 0.5
    children [ . . . ]
}

VRML kullanarak kod geliştirme -10

Cumartesi, 15 Kasım 2008 17:30 by celebi

BAŞKA BİR FONTSTYLE NODU ÖRNEĞİ

#VRML V2.0 utf8
Shape {
    appearance Appearance {
        material Material { }
    }
    geometry Text {
        string "Kucuk"
        fontStyle FontStyle {
            size 0.5
            spacing 0.5
        }
    }
}
Shape {
    appearance Appearance {
        material Material { }
    }
    geometry Text {
        string [ "", "Orta" ]
        fontStyle FontStyle {
            size 1.0
            spacing 1.0
        }
    }
}
Shape {
    appearance Appearance {
        material Material { }
    }
    geometry Text {
        string [ "", "Buyuk" ]
        fontStyle FontStyle {
            size 3.0
            spacing 1.1
        }
    }
}

Yukarıdaki kodda 3 boyutlu ortamda oluşturduğumuz yazının boyutunun ve harf aralıklarının nasıl ayarladığını görüyoruz.

FontStyle nodu içindeki "size" alanı yazımızın boyutunu belirliyor, spacing alanı ise harflar arasındaki aralığı belirliyor.

 Yukarıdaki örnek kodda yazdığımız yazının cortona tarayıcısında 3 boyutlu olarak aşağıdaki gibi görünür. Tabi şuan cortona tarayıcısını kullanıyor olsaydınız, kodumuzu çalıştırdığınızda 3 boyutlu yazdığımız yazıya farklı açılardan yaklaşabilirdiniz, yazıyı farklı açılardan görebilirdiniz. 

VRML kullanarak kod geliştirme -9

Cumartesi, 15 Kasım 2008 17:15 by celebi

FONTSTYLE NODU


#VRML V2.0 utf8
Shape {
    appearance Appearance {
        material Material { }
    }
    geometry Text {
        string "GevisGetiren"
        fontStyle FontStyle {
            family "SERIF"
            style "BOLD"
        }
    }
}
Shape {
    appearance Appearance {
        material Material { }
    }
    geometry Text {
        string [ "", "GevisGetiren" ]
        fontStyle FontStyle {
            family "SANS"
            style "BOLD"
        }
    }
}
Shape {
    appearance Appearance {
        material Material { }
    }
    geometry Text {
        string [ "", "", "GevisGetiren"]
        fontStyle FontStyle {
            family "TYPEWRITER"
            style "BOLD"
        }
    }
}



Yukarıdaki örnek kod GevisGetiren yazısını 3 boyutlu olarak sırayla Serif, Sans ve Typewriter yazı tipinde yazıyor.
Bu yazı tipleri FontStyle içindeki family alanı içinde belirtiliyor.
BOLD, ITALIC, BOLDDITALIC ya da PLAIN yazı stillerini kullanmak için FontStyle nodu içindeki style alanına BOLD, ITALIC, BOLDDITALIC ya da PLAIN yazıyoruz.

Yukarıdaki örnek kodda farklı yazı tiplerinde yazdığımız yazıyı cortona tarayıcısında 3 boyutlu olarak aşağıdaki gibi görünür. Tabi şuan cortona tarayıcısını kullanıyor olsaydınız, kodumuzu çalıştırdığınızda 3 boyutlu farklı yazı tiplerinde yazdığımız yazıya farklı açılardan yaklaşabilirdiniz, yazıı yfarklı açılardan görebilirdiniz.