3DS MAX Ana Sayfasına Giriş

 

Bu sayfada 3DS MAX MAXScript kitabımı satın alan kişilere 01.08.2011 tarihine kadar gönderileceği belirtilen özgün ve Türkçe satır açıklamalı MAXScript kodu örnekleri yer almaktadır. Bu örnekler, eksiksiz olarak (Türkçe satır açıklamaları ve kod satırları) kitabı satın alan kişilere pdf dosyası biçiminde E Posta yolu ile gönderilmiştir.

 

Değiştirici Alt Nesnesinin Transform Edilerek Tel Kafes Görünümünden Katı Model Görünümüne Geçiş Canlandırması

Bu çalışmada, bir demlik nesnesi oluşturulduktan sonra bu nesneye slice değiştiricisi uygulanmış, bu değiştiricinin plane alt nesnesi Z ekseninde hareket ettirilerek canlandırılmış ve nesneye malzeme atanmıştır. Daha sonra bu nesneden bağımsız bir kopya oluşturulmuş, dilimleme tipi değiştirilmiş (birinci demlik nesnesinin tersi yönünde) ve malzemesi atanmıştır.

Bu script, nesnelerin tel kafes görünümünden katı model görünümüne geçişin canlandırmasında kullanılabilir. Örneğin, önce sahnedeki nesnelerin tel kafes görünümleri gösterilerek modellemenin ayrıntılarının ifade edilmesinden sonra katı model görünümüne geçiş canlandırması yapılabilir.

Tel Kafes Modundan Katı Model Moduna Geçiş Animasyonu

 

demlik01 = teapot segs:12 -- segs ifadesi segments şeklinde de yazılabilir.

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. --

addModifier demlik01 dilimleme --

with animate  on --

( --

   -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. --

   -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. --

) -- 

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. --

copy demlik01 --

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. --

$Teapot002.material = standard specularlevel:70 --

timeConfiguration.playbackLoop = false --

max time play -- Bu ifade playAnimation() şeklinde de yazılabilir.

 

Masa Örtüsü Oluşturma

Bu çalışmada, nesneler üzerine kumaş ve bez türü örtülerin örtülebilmesi için kullanılan cloth değiştiricisinin MAXScript kodları ile kullanımı gösterilmiştir. Ayrıca bir değiştiricinin gizmo’sunun konum ve dönme değerlerinin belirtilmesi de yer almaktadır.

Bu script, kitapta yer alan bilgileri kullanarak tarafınızdan geliştirilebilir. Örneğin sahnede seçilen bir ve ya daha fazla nesnenin standart özelliklere ve değerlere sahip örtüler tarafından örtünmesi şeklinde bir Macro Script yazılabilir.

3DS MAX MaxScript kitabı Ankara
Masa örtüsü oluşturma

 

zemin = plane name:"zemin" length:700 width:700 -- İsmi ve sahnedeki ismi zemin olan, uzunluk ve genişlik değeri 700 birim olan bir plane oluştur.

masa = chamfercyl name:"masa" pos:[0,0,-2] radius:15 height:70 fillet:3 Height_Segments:20 Fillet_Segments:5 sides:64 Cap_Segments:1 -- İsmi ve sahnedeki ismi masa olan, belirtilen konum değerlerde sahip, yarıçapı 15 birim, yüksekliği 70 birim, kenar yuvarlatma değeri 3 birim, yükseklik segment sayısı 20, kenarlarının yuvarlatılma segment sayısı 5, kenar sayısı 64, cap segment sayısı 1 olan bir yuvarlatılmış silindir oluştur.

buzme01 = taper amount:.5 curve:-2.5 primaryaxis:2 effectaxis:1 limit:true upperlimit:73 lowerlimit:17 -- İsmi buzme01 olan ve değerleri belirtilen bir Taper değiştiricisi tanımla.

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- buzme01 isimli Taper değiştiricisinin gizmo’sunun konum değeri belirtilen değerlerde olsun.

buzme02 = taper amount:1 curve:1 primaryaxis:2 effectaxis:2 limit:true upperlimit:20 lowerlimit:0 -- İsmi buzme02 olan ve değerleri belirtilen bir Taper değiştiricisi tanımla.

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- buzme02 isimli Taper değiştiricisinin gizmo’sunun dönme değeri belirtilen değerlerde olsun.

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- buzme02 isimli Taper değiştiricisinin gizmo’sunun konum değeri belirtilen değerlerde olsun.

addModifier masa buzme01 -- masa isimli nesneye buzme01 isimli Taper değiştiricisini ata.

addModifier masa buzme02 -- masa isimli nesneye buzme02 isimli Taper değiştiricisini ata.

ortu = plane name:"ortu" pos:[0,0,70] length:120 width:120 lengthsegs:120 widthsegs:120 -- İsmi ve sahnedeki ismi ortu olan, uzunluk, genişlik, uzunluk ve genişlik segment sayları 120 olan bir plane oluştur.

ortme = cloth() -- ortme isminde bir cloth devittiricisi tanımla.

ortme.UseGravity = true --

addModifier masa ortme -- masa isimli nesneye ortme isimli cloth değiştiricisini ata.

addModifier ortu ortme -- ortu isimli nesneye ortme isimli cloth değiştiricisini ata.

max modify mode -- Modify paneline geç.

modpanel.setcurrentobject ortme --

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- ortu isimli nesneyi cloth olarak tanımla.

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- ortu isimli nesneye uygulanan ortme isimli cloth değiştiricisine ait bulunan (buraya kadar olan ifade aşağıdaki değerler için tekrar edilmeyecektir) x eksenindeki bükülme direnci değeri 4 olsun.

ortme.ClothOps.SetObjectProperty ortu "vBend" 4 --

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- X eksenindeki ortu kıvrılma direnci değeri 4 olsun.

ortme.ClothOps.SetObjectProperty ortu "vbCurve" 0.0 --

ortme.ClothOps.SetObjectProperty ortu "uStretch" 55 --

ortme.ClothOps.SetObjectProperty ortu "vStretch" 55 --

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- Kesme dayanımı değeri 45 olsun.

ortme.ClothOps.SetObjectProperty ortu "density" 0.006 --

ortme.ClothOps.SetObjectProperty ortu "damping" 0.01 -- Sönümleme değeri 0.01 olsun.

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır.

ortme.ClothOps.SetObjectProperty ortu "thickness" 0 -- Kalınlık değeri 0 olsun.

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır.

ortme.ClothOps.SetObjectProperty ortu "airres" 0.02 -- Örtü için kullanılacak olan kumaşın hava direnci 0.02 olsun.

ortme.ClothOps.SetObjectProperty ortu "dynFric" 0.1 --

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- ortu isimli nesne ile katı nesneler arasındaki statik sürtünme katsayısı değeri 0.5 olsun.

ortme.ClothOps.SetObjectProperty ortu "selfFric" 0.0 -- ortu isimli nesnenin kendi arasındaki sürtünme katsayısı değeri 0 olsun.

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır.

ortme.ClothOps.SetObjectProperty ortu "uScale" 1.0 -- X eksenindeki ölçekleme değeri 1 olsun.

ortme.ClothOps.SetObjectProperty ortu "vScale" 1.0 -- Y eksenindeki ölçekleme değeri 1 olsun.

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır.

ortme.ClothOps.SetObjectProperty ortu "offset" 1.0 -- ortu isimli nesne ile katı nesne arasında korunacak mesafe değeri 1 olsun.

ortme.ClothOps.SetObjectProperty ortu "layer" 0.0 -- ortu isimli nesnenin katman değeri 1 olsun.

ortme.ClothOps.SetObjectProperty ortu "useEdgeSprings" false --

ortme.ClothOps.SetObjectProperty ortu "useSolidFriction" false --

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır.

ortme.ClothOps.SetObjectProperty ortu "stretch" 100.0 -- ortu isimli nesne için germe açısı değeri 100 olsun.

modpanel.setcurrentobject masa --

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- masa isimli nesneyi collision nesnesi olarak tanımla.

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- Derinlik değeri 1 olsun.

ortme.ClothOps.SetObjectProperty masa "offSet" 1 --

ortme.ClothOps.SetObjectProperty masa "dynFric" 0.1 --

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır.

ortme.ClothOps.SetObjectProperty masa "EnableCollisions" true -- masa isimli nesnenin kullanımını etkinleştir.

select ortu -- ortu isimli nesneyi sahnede seç.

ortme.ClothOps.Simulate true -- ortme isimli cloth değiştiricisinin değerlerini simüle et.

 

Poly Nesnelerde Bağlantı Noktası ve Yüz Index Numarası Oluşturma

Bu çalışmada standart basit 3 boyutlu poly nesnelerin alt nesnelerinin index numaraları gösterilmiştir. Burada nesne tipi, kenar sayısı ve görünüm biçimi değişken olarak verilmiştir.

Bu script'le poly nesnelerin alt nesnelerinin index numaralarının nasıl verildiği anlaşılabilir. Poly nesnelerle çalışırken alt nesnelerin index numaralandırmasının nasıl yapıldığı bilinmelidir. Böylece poly modelleme ve canlandırma kodlamaları kolaylıkla yazılabilir.

3DS MAX MaxScript kitabı Ankara
Utility penceresi ile vertex ve face indeks numarası oluşturma

 

nokNoRen = orange --

yuzNoRen = black --

noBoy = 2 --

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- Belirtilen değerde ve zKon isminde bir değişken tanımla (Buradaki sabit değer için de rollout elemanı (spinner ya da slider) kullanılabilir.).

nesUz = [1+(0.35/noBoy),1+(0.1/noBoy),1+(0.15/noBoy)] -- Belirtilen değerde ve nesUz isminde bir değişken tanımla (Buradaki sabit değerler için de rollout elemanı (spinner ya da slider) kullanılabilir.).

noKal = 0.1 -- Değeri 0.1 olan noKal isminde bir değişken tanımla (Bu değişken için de rollout elemanı (spinner ya da slider) kullanılabilir.).

kal = extrude amount:noKal --

nesRen = [30,120,70] -- Belirtilen değerde ve nesRen isminde bir değişken tanımla (Bu değişken için de rollout elemanı (colorpicker) kullanılabilir.).

utility nokYuzNo "Noktalar ve Yuzler" -- nokYuzNo isminde ve panel başlığında Noktalar ve Yuzler yazan bir utility oluştur.

( -- nokYuzNo isimli utility başı

   group "Yeni Nesne" -- Yeni Nesne başlıklı bir bölüm oluştur ve aşağıda tanımlanan panel elemanları bu bölümde yer alsın.

   ( -- Yeni Nesne başlıklı group başı

       radiobuttons yeNesSec labels:#("Prizma", "Koni", "Kure 1", "Kure 2", "Silindir", "Piramit") columns:2 --

       -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- uzSegs isminde ve sol yanında Uzun. Segm. Sayisi:  yazan, en küçük değeri 1, en yüksek değeri 4, varsayılan değeri, 1 olan, bulunduğu konumdan, yatay eksende (x) 0 birim, düşey eksende (y) 6 birim aşağıya ötelenmiş yatay olarak yerleştirilmiş (varsayılan) bir spinner oluştur (Aşağıda yer alan diğer tüm spinner’lar için ilgili değerler belirtilmiştir.).

       spinner genSegs "Gen. Segm. Sayisi: " type:#integer range:[1,12,1] fieldWidth:30 --

       spinner yukSegs "Yuks. Segm. Sayisi: " type:#integer range:[1,16,1] fieldWidth:30 --

       spinner kenSay "Kenar Sayisi: " type:#integer range:[3,16,12] offset:[0,-63] fieldWidth:30 visible:false --

       spinner seg1 "Segment Sayisi: " type:#integer range:[4,16,12] offset:[0,-21] fieldWidth:30 visible:false --

       spinner seg2 "Segment Sayisi: " type:#integer range:[2,4,2] offset:[0,-21] fieldWidth:30 visible:false --

       spinner derSegs "Derin. Segm. Sayisi: " type:#integer range:[1,4,2] offset:[0,-21] fieldWidth:30 visible:false --

       on yeNesSec changed state do --

       (  -- yeNesSec isimli radiobuttons’un davranışının başı

           -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. --

           If yeNesSec.state == 2 then (uzSegs.visible = false; genSegs.visible = false; yukSegs.visible = false; kenSay.visible = true; seg1.visible = false; seg2.visible = false; derSegs.visible = false) --

           If yeNesSec.state == 3 then (uzSegs.visible = false; genSegs.visible = false; yukSegs.visible = false; kenSay.visible = false; seg1.visible = true; seg2.visible = false; derSegs.visible = false) --

           If yeNesSec.state == 4 then (uzSegs.visible = false; genSegs.visible = false; yukSegs.visible = false; kenSay.visible = false; seg1.visible = false; seg2.visible = true; derSegs.visible = false) --

           If yeNesSec.state == 5 then (uzSegs.visible = false; genSegs.visible = false; yukSegs.visible = false; kenSay.visible = true; seg1.visible = false; seg2.visible = false; derSegs.visible = false) --

           If yeNesSec.state == 6 then (uzSegs.visible = false; genSegs.visible = true; yukSegs.visible = true; kenSay.visible = false; seg1.visible = false; seg2.visible = false; derSegs.visible = true) --

       ) -- yeNesSec isimli radiobuttons’un davranışının sonu

       button nokYuzNoOl "Nokta ve Yuz No Olustur" pos:[15,150] --

   ) -- Yeni Nesne isimli group sonu

   spinner nokNoBoy "Nokta No Boyutu" range:[0.5,20,noBoy] fieldWidth:40  --

   -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır.  --

   fn yeNesYap = -- yeNesYap isminde bir fonksiyon tanımla.

   ( -- yeNesYap isimli fonksiyonun başı

       -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- İçeriği, yeNesSec radiobuttons’un, isaretine göre degisecek olan yeNes isminde bir değişken tanımla.

       ( -- case başı

           1: box name:"prizma" LengthSegs:uzSegs.value WidthSegs:genSegs.value HeightSegs:yukSegs.value wirecolor:nesRen --

           2: cone name:"koni" radius1:25 radius2:15 Height:25 HeightSegs:2 sides:kenSay.value smooth:off wirecolor:nesRen --

           3: sphere name:"kure" segs:seg1.value smooth:off wirecolor:nesRen --

           4: geosphere name:"kure" segs:seg2.value smooth:off wirecolor:nesRen --

           5: cylinder name:"silindir" Height:25 sides:kenSay.value smooth:off wirecolor:nesRen --

           6: pyramid name:"piramit" WidthSegs:genSegs.value depthsegs:derSegs.value HeightSegs:yukSegs.value wirecolor:nesRen --

       ) -- case sonu

       yeNes -- yeNes isimli değişkene atanan nesneyi oluştur.

       select yeNes -- Sahnede, yeNes isimli değişkenle oluşturulan nesneyi seç.

   ) -- yeNesYap isimli fonksiyonun sonu

   fn kopya = -- kopya isminde bir fonksiyon tanımla.

   ( -- kopya isimli fonksiyonun başı

       -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- model isimli nesneyi mesh modele çevir.

   ) -- kopya isimli fonksiyonun sonu

   fn nokNoYap = -- nokNoYap isminde bir fonksiyon tanımla.

   ( -- nokNoYap isimli fonksiyonun başı

       -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- 1’den seçili olan nesnenin bağlantı noktasi sayısına kadar bir siralama oluştur ve değerleri nok isimli değişkene ata.

       ( -- for nok başı

           nokKon = polyop.getVert $ nok -- Değeri, sahnede seçili olan nesnenin, nok isimli değişkende toplanan değerlere eşit olan indeks numaralarına sahip olan bağlantı noktalarının konum bilgileri olan nokKon isminde bir değişken tanımla.

           nokNo = text name:(uniqueName($.name+" "+"Nokta ")) alignment:2 wirecolor:nokNoRen size:nokNoBoy.value pos:(zKon+(nokKon*nesUz)) -- Ismi nokNo, sahnedeki ismi, sahnede seçili olan nesnenin ismine, bosluk karakteri, Nokta  ifadesi eklenmis ve 01, 02, …. biçiminde devam eden, ortada yazılı, renk değerini nokNoRen değişkeninden, boyut değerini nokNoBoy spinner’ından alan ve konum değeri, nokKon ve nesUz isimli değişkenlerin değerlerinin çarpım sonucuna, zKon isimli değişkenin değerinin eklenmesi ile elde edilen değer kadar olan bir text oluştur (Bu komut for komutu içinde yazıldığından ……. (Sahnede seçili olan nesnenin sahip olduğu bağlantı noktası kadar).).

           -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- nokNo isimli nesne (text) render edilebilir olsun.

           nokNo.text = nok as string -- nokNo isimli text’in içeriğinde, nok isimli değişkende toplanan değerler metin ifadesi olarak (as string) yazsın.

           addModifier nokNo kal -- nokNo isimli nesneye, (yukarıda tanımlanan) kal isimli (shell) değiştiriciyi ata.

           rotate nokNo 90 x_axis -- nokNo isimli text’i 90 derece x ekseninde döndür.

       ) -- for nok sonu

   ) -- nokNoYap isimli fonksiyonun sonu

   fn yuzNoYap = -- yuzNoYap isminde bir fonksiyon tanımla.

   ( -- yuzNoYap isimli fonksiyonun başı

       for yuz in 1 to polyop.getNumFaces $ do --

       ( -- for yuz başı

           yuzKon = polyop.getFaceCenter $ yuz -- Değeri, sahnede seçili olan nesnenin ($), yuz isimli değişkende toplanan değerlere eşit olan indeks numaralarına sahip olan yüzlerinin konum bilgileri olan yuzKon isminde bir değişken tanımla.

           yuzNo = text name:(uniqueName($.name+" "+"Yuz ")) alignment:2 wirecolor:yuzNoRen size:yuzNoBoy.value pos:(zKon+(yuzKon *nesUz)) -- Ismi yuzNo olan, sahnedeki ismi, sahnede seçili olan nesnenin ismine, sırasıyla boşluk karakteri, Yuz  ifadesi eklenmis ve 01, 02, …. biçiminde devam eden (uniqueName) merkeze hizalanmış (1 - left, 2 - center, 3 - right, 4 - justify), renk değerini yuzNoRen isimli değişkenden alan, boyut değerini yuzNoBoy isimli spinner’dan alan ve konum değeri, nokKon ve nesUz isimli değişkenlerin değerlerinin çarpım sonucuna zKon isimli değişkenin değerinin eklenmesi ile elde edilen değer kadar olan bir text oluştur (Bu komut for komutu içinde yazıldığından for komutunda tanımlanan değişkende toplanan değerler kadar (sahnede seçili olan nesnenin sahip olduğu yüz sayısı kadar) tekrarlanacak ve belirtilen konumlarda text’leri oluşturacaktır.).

           yuzNo.baseobject.renderable = true -- yuzNo isimli nesne (text) render edilebilir olsun.

           yuzNo.text = yuz as string --

           addModifier yuzNo kal -- yuzNo isimli nesneye, (yukarıda tanımlanan) kal isimli (shell) değistiriciyi ata.

           rotate yuzNo 90 x_axis -- yuzNo isimli text’i 90 derece x ekseninde döndür.

       ) -- for yuz sonu

   ) -- yuzNoYap isimli fonksiyonun sonu

   on nokNoBoy changed val do $*nok*.size = val -- nokNoBoy isimli spinner’ın değeri değiştiğinde, ismi, sahnede seçili olan nesnenin ismi ile başlayıp herhangi bir grup karakterle devam eden, nok ifadesinden sonra yine herhangi bir grup karakterle biten isme sahip olan tüm nesnelerin (textlerin) boyutları da değişsin.

   on yuzNoBoy changed val do $*yuz*.size = val -- yuzNoBoy isimli spinner’ın değeri değiştiğinde, ismi, sahnede seçili olan nesnenin ismi ile başlayıp herhangi bir grup karakterle devam eden, yuz ifadesinden sonra yine herhangi bir grup karakterle biten isme sahip olan tüm nesnelerin (textlerin) boyutları da değişsin.

   fn gor = -- gor isminde bir fonksiyon tanımla.

   ( -- gor isimli fonksiyonun başı

       max tool zoomextents all --

       viewport.zoom 0.7 -- Aktif viewport’da belirtilen oranda yakınlaşma sağla.

       max pancamera --

   ) -- gor isimli fonksiyonun sonu

   group "Toplam Sayi Bilgileri" -- Toplam Sayi Bilgileri başlıklı bir bölüm oluştur ve aşağıda tanımlanan panel elemanları bu bölümde yer alsın.

   ( -- Toplam Sayi Bilgileri başlıklı group başı

       -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- nokSayBil isminde ve içeriğinde, Baglanti noktasi:  ifadesi olan ve yatay eksende (x) 10 birim sağda, düsey eksende (y) ortada bir etiket oluştur. Bu etiketin (label) yanında, aşağıda tanımlanan bir (across:2) rollout elemanı (etiket) daha olsun (Seçilen nesnenin bağlantı noktalarının sayısını yazan etiketin başlığı olarak kullanılacaktır.).

       label nokSay offset:[5,0] -- nokSay isminde ve içeriğinde, nokSay isimli değişkenin değeri olan ve yatay eksende (x) 5 birim sağda, düsey eksende (y) ortada bir etiket oluştur.

       label yuzSayBil "Yuz: " offset:[38,0] across:2 -- yuzSayBil isminde ve içeriğinde, Yuz:  ifadesi olan ve yatay eksende (x) 38 birim sağda, düşey eksende (y) ortada bir etiket oluştur. Bu etiketin (label) yanında, aşağıda tanımlanan bir (across:2) rollout elemanı (etiket) daha olsun.

       label yuzSay offset:[5,0] -- yuzSay isminde ve içeriğinde, yuzSay isimli değişkenin değeri olan ve yatay eksende (x) 5 birim sağda, düşey eksende (y) ortada bir etiket oluştur.

   ) -- Toplam Sayi Bilgileri isimli group sonu

   group "Gorunum" -- Gorunum başlıklı bir bölüm oluştur ve aşağıda tanımlanan panel elemanları bu bölümde yer alsın.

   ( -- Gorunum başlıklı group başı

       checkBox nokNoGos "Nokta numaralarını goster" checked:true --

       -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- nokNoGos isimli Checkbox’in durumu değiştiğinde, eğer bu Checkbox’ isaretli değilse, ismi, sahnede seçili olan nesnenin ismi ile başlayıp herhangi bir grup karakterle devam eden, nok ifadesinden sonra yine herhangi bir grup karakterle biten isme sahip olan tüm nesneleri (text’leri) gizle.

       checkBox yuzNoGos "Yuz numaralarını goster" checked:true -- yuzNoGos isminde ve sağ yanında Yuz numaralarını göster yazan, varsayılan olarak isaretli durumda bulunan ve sola (varsayılan) hizalanmış bir checkbox oluştur.

       on yuzNoGos changed State do if yuzNoGos.checked != true then hide $*yuz* else unhide $*yuz* --

   ) -- Gorunum isimli group sonu

   fn onay = -- onay isminde bir fonksiyon tanımla.

   ( -- onay isimli fonksiyonun başı

       nokNoGos.checked = true --

       yuzNoGos.checked = true --

   ) -- onay isimli fonksiyonun başı

   on nokYuzNoOl pressed do -- nokYuzNoOl isimli button’a basildiginda;

   ( -- nokYuzNoOl isimli buton’un davranışının başı

       delete geometry; delete shapes -- Geometri (üç boyutlu) ve sekil (iki boyutlu)  sınıfında bulunan nesneleri (gizli (hide) ya da dondurulmuş (freeze) bile olsa) sahneden sil.

       -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- Aktif görüş penceresinde kenar çizgilerini görünür yap.

       yeNesYap() -- yeNesYap isimli fonksiyonu çalıştır.

       kopya() -- kopya isimli fonksiyonu çalıştır.

       nokSay.text = getNumVerts $ as string -- nokSay isimli text’in içeriğinde, sahnede seçili olan nesnenin bağlantı noktasi sayısı, metin ifadesi olarak yazsın.

       yuzSay.text = getNumFaces $ as string -- yuzSay isimli text’in içeriğinde, sahnede seçili olan nesnenin yüz sayısı metin ifadesi olarak (as string) yazsın.

       nokNoYap() -- nokNoYap isimli fonksiyonu çalıştır.

       yuzNoYap() -- yuzNoYap isimli fonksiyonu çalıştır.

       gor() -- gor isimli fonksiyonu çalıştır.

       onay() -- onay isimli fonksiyonu çalıştır.

   ) -- nokYuzNoOl isimli button’un davranışının sonu

   label yaz "Yazan: " across:2 -- İçeriğinde Yazan:  ifadesi olan yaz isminde bir etiket oluştur. Bu etiketin yanında, aşağıda tanımlanan bir (across:2) utility elemanı (label) daha olsun.

   hyperlink baglan "Nadir AKSOY" color:(color 0 0 255) address:"http://www.nadiraksoy.com" offset:[-15,0] --

   label surum "Surum: 1.0 (05-03-2010)" --

) -- nokYuzNo isimli utility sonu


Nesnenin Yüzlerine ve Bağlantı Noktalarına Renk Değerleri Verilmesi

Bu çalışmada nesnenin yüzlerinin ve bağlantı noktalarının renklerinin değiştirilmesi açıklanmıştır. Bu renkler çalışma pencerelerinde ve render çıktısında görüntülenebilir.

Bir nesnenin yüz ve bağlantı noktası alt nesnelerinin renklendirilmesinin gerekli olduğu yerlerde kullanılabilir.

Ankara 3ds max
3DS MAX MAXScript İle Yüz (Face) ve Bağlantı Noktası (Vertex) Renk Değerleri Verilmesi
Renk değerleri tanımlanan yüz ve bağlantı noktası

 

delete objects -- Sahnede bulunan tüm nesneleri sil.

b = box() -- İsmi b olan bir küp oluştur.

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- b isimli nesneyi poly modele çevir.

for y = 1 to polyOp.getNumFaces b do --

( -- for y başı

   -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. --

   ( -- for n başı

       polyOp.setFaceColor b 0 #{y} (color 255 (random 50 255) (random 0 200)) -- b isimli poly nesnenin, y değişkenine atanan değerlere karşılık gelen index numarasına sahip olan yüzlerinin renkleri, kırmızı oranı sabit (255), değerleri rasgele olarak belirtilen yeşil ile mavi renklerin rastgele oranda karışımı (yeşil oranı 50 255 arası, mavi oranı 0 200 arası) ile elde edilen renkler olsun.

       -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- b isimli poly nesnenin, n değişkenine atanan değerlere karşılık gelen index numarasına sahip olan bağlantı noktalarının renkleri, kırmızı oranı sabit (255), değerleri rasgele olarak belirtilen yeşil ile mavi renklerin rastgele oranda karışımı (yeşil oranı 50 255 arası, mavi oranı 0 200 arası) ile elde edilen renkler olsun.

       -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- b isimli poly nesnenin 2 index numarasına sahip olan yüzünün rengi, kırmızı (red) olsun.

       polyOp.setVertColor b 0 #{1} blue -- b isimli poly nesnenin 1 index numarasına sahip olan bağlantı noktasının rengi, mavi (blue) olsun.

   ) -- for n sonu

) -- for y sonu

m = standard() -- Standart malzeme bilgisine sahip m isminde bir değişken tanımla.

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- Standart malzeme bilgisine sahip olan m ismindeki değişkenin diffuse (görünen) kısmı bağlantı noktaları için tanımlanan renkleri uygula.

b.material = m --

-- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- b isimli nesne için görüş pencerelerinde bağlantı noktalarının renklerinin görüntülenmesi modunu aç.

setShadeCVerts b true -- b isimli nesne için görüş pencerelerinde bağlantı noktalarının gölgeli görüntülenmesini aç.

clearSelection() --

 

DropDownList’lerin Birbiri İle İlişkilendirilmesi

Bu çalışmada iki DropDownList’in değerlerinin birbiri ile ilişkilendirilmesi açıklanmıştır. Burada rollout’un üstünde yer alan marka_ddl isimli DropDownList’in değeri değiştiğinde, altta yer alan model_ddl isimli DropDownList’in değeri de buna göre değişmektedir. Altta yer alan model_ddl isimli DropDownList’in değerinin değişmesi üstte yer alan marka_ddl isimli DropDownList’in değerini etkilemez.

Bir değere bağlı alt değerlerin seçiminin gerekli olduğu yerlerde kullanılabilir.

MAXScript Tutorial MAXScript Tutorial
Birbirleri ile ilişkilendirilen DropDownList’ler

 

global modelListesi = #(#("Linea","Bravo","Punto"),#("Clio","Megane","Kango"),#("Corolla","Yaris","Auris")) -- modelListesi isminde ve belirtilen değerlere sahip global bir değişken tanımla.

global markaListesi = #("FIAT","RENAULT","TOYOTA") -- markaListesi isminde ve belirtilen değerlere sahip global bir değişken tanımla.

global i = 1 -- i isminde ve değeri 1 olan global bir değişken tanımla.

rollout aracListesi "Araç Listesi" height:150 -- aracListesi isminde ve panel başlığında Araç Listesi yazan 150 birim yüksekliğinde bir rollout oluştur.

(-- aracListesi isimli rollout’un başı

   -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. --

   -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- marka_ddl isimli açılıp kapanabilir listenin i ismli değişkenin değerine eşit sıradaki değer seçildiğinde aracListesi isimli rollout’un 2. öğesinin değeri de i ismli değişkenin değerine eşit sıradaki değer kadar olsun (Rollout ilk açıldığında marka_ddl isimli açılıp kapanabilir listenin ilk değeri aktif iken, model_ddl isimli açılıp kapanabilir listenin de ilk değeri aktif olsun.).

   -- Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- model_ddl isminde ve modelListesi isimli global değişkenin değerlerinden i ismli değişkenin değerine eşit sıradaki değere sahip, üzerinde Model yazan açılıp kapanabilir liste oluştur.

) -- aracListesi isimli rollout’un sonu

createDialog aracListesi  -- (Yukarıda oluşturulan) aracListesi ismindeki rollout’u içine alacak bir diyalog penceresi oluştur.

 

Spinner’ların Birbiri İle İlişkilendirilmesi

Bu çalışmada iki spinner’ın değerlerinin birbiri ile ilişkilendirilmesi açıklanmıştır. Burada rollout’un üstünde yer alan Kucuk Deger isimli spinner’ın değeri daima altta yer alan Buyuk Deger isimli spinner’ın değerinden küçük olmaktadır. Her iki spinner’ın değerinin değiştirilmesi durumunda bu kural geçerlidir.

Bir değerin bir başka değerden daha büyük ya da küçük olmasının istenmediği yerlerde kullanılabilir.

3DS MAX MaxScript kitabı Ankara 3d studio max

Birbirleri ile ilişkilendirilen spinner’lar

 

fn esitle kucuk buyuk degerAlani = --

( --

   if kucuk > buyuk then --

       Bu kod satırı E posta ile gönderilen dosyada yer almaktadır.

   if buyuk > kucuk then --

       Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. --

) --

rollout spinnerEsitleme "Spinner Esitleme" --

( --

   spinner spinnerKucuk "Kucuk Deger: " --

   spinner spinnerBuyuk "Buyuk Deger: " --

   Bu kod satırı E posta ile gönderilen dosyada yer almaktadır. -- spinnerKucuk isimli spinner’ın değeri değiştiğinde esitle isimli fonksiyonu, sahip olduğu 3 değişkeninin (kucuk, buyuk ve degerAlani) belirtilen değerlerinde çalıştır (Böylece spinnerKucuk isimli spinner’ın değeri değiştiğinde spinnerBuyuk isimli spinner’ın değeri, yukarıdaki koşullara göre değer alanı isimli değişkenin değerine eşit olacaktır.). (Aşağıdaki satırda da benzer komut ilgili değerlere göre gerçekleştirilecektir.)

   on spinnerBuyuk changed val do esitle spinnerKucuk.value val spinnerBuyuk --

) --

createDialog spinnerEsitleme --

Başa Dön

Ana Sayfa İçin Tıklayınız! Özgeçmiş İçin Tıklayınız! Şanlı Türk Bayrağı Özgeçmiş İçin Tıklayınız!