VRML kullanarak kod geliştirme -22- animasyon 4

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

ROUTE :

ROUTE kelimesi, iki nodu birlikte kullanabilmemizi sağlar:


-Gönderici nodun adı ve eventOut(output) adı
-Alıcı nodun adı ve eventIn(input) adı

Örnek:

ROUTE gonderici.rotation_changed
   TO alici.set_rotation

ROUTE ve TO büyük harflerle yazılmalıdır.


Olay veri yapıları:

Gönderici ve alıcı veri yapıları örtüşmelidir.

Karakter         Değerleri

--------------------------------------------------------------------------------
 
1                  S: Tek değer
                    M: Birden çok değer  


2                   Herzaman F


kalanı            veri yapısının adı, String, Rotation, ya da Color gibi



Veri Tipi                     Anlamı

--------------------------------------------------------------------------------
 
SFBool                       Boole cebri ,true ya da false değerleri
SFColor, MFColor        RGB(Red:Kırmızı, Green:Yeşil, Blue:mavi) renk değerleri
SFFloat, MFFloat          ondalık sayı değeri
SFImage                    Görüntü değeri
SFInt32, MFInt32         Tamsayı değeri
SFNode, MFNode         Nod değeri



VRML kullanarak kod geliştirme -21- animasyon 3

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

Daha önceden her nodun alanlara(field) sahip olduğunu görmüştük, şimdi buna ek olarak
input ve output'a da sahip olduklarını göreceğiz.Bu durumda bir nod:

-alan (field)
-eventIn yani bir inputa
-eventOut yani bir outputa sahiptir.

Örnek inputlar:

Bir Transform Nodunun sahip olabileceği eventIn'ler:
-set_translation
-set_rotation
-set_scale


Bir Material nodunun sahip olabileceği eventIn'ler:
-set_diffuseColor
-set_emissiveColor
-set_transparency

Örnek Outputlar:

OrientationInterpolator nodunun sahip olduğu output:
-value_changed (dönme olayının değerlerini gönderir)

PositionInterpolator nodunun sahip olduğu output:
-value_changed (koordinat değerlerini göndermeye yarar)

TimeSensor nodunun sahip olduğu output:
-time (zaman değerlerini gönderir)

VRML kullanarak kod geliştirme -20- animasyon 2

Cumartesi, 22 Kasım 2008 23:54 by celebi
Animasyon döngüsünü kullanmak:

Bir cismi döndürmek için:
-Bir cismin Transform nodunun içindeki rotation alanına rotation olayını göndermemiz gerekir.

Bir cismin yanıp sönmesi için:
-Bir cismin Material nodunun diffuseColor alanına color olayını göndermemiz gerekir.


Bir animasyon döngüsü oluşturmak için 3 şeye ihtiyacımız var:

1) Olayları gönderen bir noda (Bu nod, DEF ile isimlendirilmiş olmalı)
2) Olayları alan bir noda (Bu nod da DEF ile isimlendirilmiş olmalı)
3) Bunları birbirine bağlayan bir geçite(route) ihtiyacımız var.

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 -11

Cumartesi, 15 Kasım 2008 18:08 by celebi

Bir başka FontStyle Örneği

#VRML V2.0 utf8

DEF Marker Shape {
    appearance DEF White Appearance {
        material Material { }
    }
    geometry Sphere { radius 0.2 }
}

# Horizontal left-to-right
Shape {
    appearance USE White
    geometry Text {
        string "Y a z i"
        fontStyle FontStyle {
            justify "BEGIN"
            horizontal TRUE
            leftToRight TRUE
            topToBottom TRUE
        }
    }
}

# Horizontal right-to-left
Shape {
    appearance USE White
    geometry Text {
        string "Y a z i"
        fontStyle FontStyle {
            justify "BEGIN"
            horizontal TRUE
            leftToRight FALSE
            topToBottom TRUE
        }
    }
}

# Vertical top-to-bottom
Shape {
    appearance USE White
    geometry Text {
        string "Yazi"
        fontStyle FontStyle {
            justify "BEGIN"
            horizontal FALSE
            leftToRight TRUE
            topToBottom TRUE
        }
    }
}

# Vertical bottom-to-top
Shape {
    appearance USE White
    geometry Text {
        string "Yazi"
        fontStyle FontStyle {
            justify "BEGIN"
            horizontal FALSE
            leftToRight TRUE
            topToBottom FALSE
        }
    }
}

Yukarıdaki kodda FontStyle nodu içindeki horizontal alanının TRUE olması yazılan yazının yatay olması anlamına gelir eğer horizontal alanı FALSE olsaydı, yazılan yazı dikey görünecekti.
leftToRight alanının TRUE olması yazının soldan sağa doğru yazılması anlamına geliyor. Bu değer FALSE olsaydı yazımız soldan sağa yazılmış olacaktı, örneğin "BİR" yazısını yazıyorsak bu "RİB" görünecekti.
topToRight alanı yazının handi yönde yazılacağını bize verir bu alanın TRUE olması yazının yukarıdan aşaağıya doğru yazılması anlamına gelir, bu değer FALSE olsaydı tam tersi olacaktı.


Yukarıdaki örnek kodda 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 yazdığımız yazıya farklı açılardan yaklaşabilirdiniz, yazıyı farklı açılardan görebilirdiniz.