Gönderen Konu: Maya Python Zincir Yapma Scripti  (Okunma sayısı 6532 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı xenamorphx

  • Yeni Üye
  • *
  • İleti: 18
    • Profili Görüntüle
    • enginozdemir.com
Maya Python Zincir Yapma Scripti
« : Mayıs 08, 2009, 19:59:21 ÖS »
Maya'da python ile yazdıgım, herhangi bir curve uzerinden zincir geometrisi olusturan scriptim.

http://rapidshare.com/files/230640920/chainCreator.rar.html



Çevrimdışı Gokhan Sonmez (LW3D)

  • Boş İşler Bakanı
  • Uzman
  • *****
  • İleti: 4819
    • Profili Görüntüle
    • http://www.gokhansonmez.com
Ynt: Maya Python Zincir Yapma Scripti
« Yanıtla #1 : Mayıs 08, 2009, 20:06:22 ÖS »
Teşekkürler xenamorph... Affına sığınarak kod olarak ekleyelim diye düşündüm...Hem daha kalıcı olabilir...

Kod: [Seç]
#chain creator tool by Engin Ozdemir 2009
#create window
import maya.cmds as mc
cwindow=mc.window(title="chain creator tool", wh=(256,256),s=False)
mc.columnLayout(adjustableColumn=True)
mc.text( label="Select a curve and press create." )
cbt=mc.button( label='Create', align='center', command="create_chain()" )
mc.showWindow(cwindow)

def create_chain():
import random
#define curve
d=mc.ls(sl=True)
dlen=mc.arclen(d[0])
length=int(dlen/2)
print length

#rebuild curve
mc.rebuildCurve(d[0], ch=1, rpo=1, rt=0, end=1, kr=0, kcp=0, kep=1, kt=0, s=length, d=1, tol=0.01)
print "operating on "+d[0]

#create a low poly cylinder
cSample=mc.polyCylinder(ch=True, o=True, r=0.3, h=1.8, sa=6, sc=1, cuv=3, n="cSample")
print cSample[0]+" created."

#remove unwanted faces
mc.select(cl=True)
mc.select(cSample[0]+".f[12:17]")
mc.select(cSample[0]+".f[6:11]", add=True)
mc.Delete()
print "Unwanted faces removed."

#Duplicate and reposition low poly cylinder
mc.select(cl=True)
cSampleD=mc.duplicate(cSample[0])
mc.setAttr(cSampleD[0]+".translateX",1.2)
print cSample[0]+" duplicated and repositioned."

#combine both geometry
cSampleC=mc.polyUnite(cSample[0], cSampleD[0], n="cSampleC")
print "Both geometry merged."
mc.select(cl=True)

#select top edges for bridge
mc.select(cSampleC[0]+".e[6:11]")
mc.select(cSampleC[0]+".e[24:29]", add=True)
print "Top eadges selected."

#polyBrige top edges
mc.polyBridgeEdge(ch=1, divisions=5, twist=0, taper=1, curveType=2, smoothingAngle=30)
print "Top edges briged."

#select bottom edges for bridge
mc.select(cl=True)
mc.select(cSampleC[0]+".e[0:5]")
mc.select(cSampleC[0]+".e[18:23]", add=True)
print "Bottom eadges selected."

#polyBrige bottom edges
mc.polyBridgeEdge(ch=1, divisions=5, twist=0, taper=1, curveType=2, smoothingAngle=30)
print "bottom edges briged."
mc.select(cl=True)

#optimize geometry agaist abuse
chain=mc.duplicate(cSampleC[0])
mc.select(cSampleC[0])
mc.delete()
mc.select(chain[0])
mc.displaySmoothness(divisionsU=3, divisionsV=3, pointsWire=16, pointsShaded=4, polygonObject=3)
mc.subdivDisplaySmoothness(smoothness=3)

#freeze transformations and center pivot
mc.makeIdentity (apply=True, translate=True, rotate=True, scale=True,normal=False)
mc.xform (cp=True, ztp=True)
print "geometry optimized"

#add path animation
mc.select(d[0], add=True)
mc.pathAnimation(stu=0, etu=length, follow=True)
print "animated along curve"

#duplicate along curve
t=0
for i in range(0,length,1):
rotc=mc.duplicate(chain[0])
mc.select(rotc[0])
rrot=random.randint(-5,5)
mc.rotate(0,(((-1)**t+1)/2)*90+rrot,0, relative=True, objectSpace=True)
mc.select(cl=True)
mc.currentTime(i)
t=t+1
mc.select(chain[0])
mc.delete()
print "%d chains created."%length

Çevrimdışı xenamorphx

  • Yeni Üye
  • *
  • İleti: 18
    • Profili Görüntüle
    • enginozdemir.com
Ynt: Maya Python Zincir Yapma Scripti
« Yanıtla #2 : Mayıs 08, 2009, 20:15:51 ÖS »
Evet daha iyi olur ;)

Çevrimdışı triton

  • Üye
  • **
  • İleti: 161
    • Profili Görüntüle
Ynt: Maya Python Zincir Yapma Scripti
« Yanıtla #3 : Mayıs 09, 2009, 03:36:46 ÖÖ »
emeğine sağlık.

Curve'daki düz ve hafif dönüşlerde sorun yok ama ani dönüşlerde zincirler birbirinden çıkıyor bu sorunu bir nebze giderip , zincir boyut olayını arayüze eklesen. Birde orjinal curve'yi yoketmeyip üzerinde oynayınca zincirde ona göre tekrardan şekil alsa güzel olabilir  v.1.2 :)

Çevrimdışı xenamorphx

  • Yeni Üye
  • *
  • İleti: 18
    • Profili Görüntüle
    • enginozdemir.com
Ynt: Maya Python Zincir Yapma Scripti
« Yanıtla #4 : Mayıs 09, 2009, 16:30:11 ÖS »
 :)Daha sonra tekrar donup bu tarz duzeltme ve ekler yapmayı dusunuyorum. Tavsiyelerin icin tesekkurler. Su keskin donuslerde ayrılan parcaları nasıl birlestireceğimden tam emin olamadım. Onca yeni tanımlama yapmaktansa ayrılan bir iki zinciride elle hafifce duzeltmek daha kolayıma geldi :P 

Çevrimdışı xenamorphx

  • Yeni Üye
  • *
  • İleti: 18
    • Profili Görüntüle
    • enginozdemir.com
Ynt: Maya Python Zincir Yapma Scripti
« Yanıtla #5 : Mayıs 09, 2009, 20:12:41 ÖS »
http://rapidshare.com/files/231022190/chainCreatorv0.4.rar.html

versiyon 0.4 zincir boyutlandırma parametresi arayuze eklendi  :)