3D անիմացիաներ ստեղծելու նպատակով VPython-ի օգտագործում

VPython-ն անսովոր կերպով հեշտացնում է այն ծրագրերի գրելը, որոնք ստեղծում են նավարկելի, իրական ժամանակի 3D անիմացիաներ: Այն հիմնված է Python ծրագրավորման լեզվի վրա, որը մեծապես օգտագործվում է ծրագրավորման ներածական դասընթացներում՝ շնորհիվ իր պարզ դիզայնի, և այն նաև մեծապես օգտագործվում է գիտության և բիզնեսի ոլորտներում:

Դասական VPython-ը ստեղծեց Դևիդ Շերերը 2000թ-ին: 2011թ-ին Դևիդ Շերերը և Բրուս Շերվուդը նախաձեռնեցին GlowScript-ի ծրագրավորումը, ինչը իրենից ներկայացնում է նմանատիպ ծրագրավորման միջավայր, սակայն այն աշխատում է դիտարկչում: 2014թ-ին հնարավոր դարձավ RapydScript-ի օգտագործումը, որը Python-ին շատ նման ծրագրավորման լեզու է: Օգտագործման նպատակը GlowScript  միջավայրում VPython ծրագրերին աջակցելն է: Այս փաստաթուղթը նկարագրում է VPython-ի GlowScript  տարբերակը: GlowScript միջավայրի վերաբերյալ կա նաև տեխնիկական փաստաթուղթ, որում խոսվում է այն մասին, թե ինչպես օգտագործեք JavaScript -ը կամ RapydScript-ը Ձեր ծրագրերի համար: 

2014թ-ին Ջոն Քոադիի կողմից ստեղծված և ներկա պահին Ջոն Քոադիի, Ռութ Չեբեի, Բրուս Շերվուդի և Սթիվ Սպիքլեմայրի կողմից կատարելագործվող նոր <<Jupyter>> VPython-ի բետա տարբերակ կա: Այն աշխատում էJupyter notebook-ում և օգտագործում է ստանդարտ Python-ով GlowScript VPython շարահյուսությունը, որով էլ ապահովում է մուտքը դեպի ստանդարտ Python մոդուլներ: Մանրամասների համար նայեք vpython.org-ը: Նաև հետաքրքիր է VPython-ի ապագա զարգացմանն ուղղված ծրագրերի մասին քննարկումը:

Համառոտ ներածության համար նայեք հետևյալ YouTube վիդեոները: Սրանք ստեղծվել են Դասական VPython-ի համար, սակայն նույն ձևով օգտակար են նաև՝ ավելի վերջերս ստեղծված տարբերակները սովորելու համար:

3D Օբյեկտներ

Փոփոխականի Հանձնարարում

Սկսվող Շրջաններ

Շրջաններ և Անիմացիա

Չափման Գործոններ

Շարահյուսության Սխալների Վրիպազերծում

Ցանկեր, Մաս 1

Ցանկեր, Մաս 2

Կան մի շարք GlowScript VPython ձեռնարկներ, որոնք ստեղծել է Ռեթթ Ալլեինը շարժման համակարգչայնորեն կանխատեսման համատեքստում ֆիզիկայի ներածական դասընթացի մակարդակով:

Սկսում ենք

VPython ծրագիր գրելու համար գրանցվեք glowscript.org-ում:

* Դուք կտեսնեք հետևյալ նախադասությունը՝ <<Դուք գրանցվում եք որպես <Ձեր օգտանունը>, և Ձեր ծրագրերն այստեղ են>>: Սեղմեք այստեղ:

* Սեղմեք Create New Program-ի (Ստեղծել Նոր Ծրագիր) վրա: (Կարող է ցանկություն ունենաք սեղմել Public (Հանրային) սյունակին նախքան Ձեր ծրագիրը ստեղծելը, քանի որ Ձեր Private  (Անձնական) թղթապանակի միջի ծրագրերը հասանելի չեն մյուսներին:) Անուն ընտրեք ծրագրի համար, իսկ այդ անունը չպետք է ներառի բացատներ կամ ստորագծումներ:

GlowScript 2.0 VPython տողի ներքևում հավաքեք box(): Սեղմեք Run this program (Աշխատեցնել այս ծրագիրը), որպեսզի աշխատեցնեք Ձեր ծրագիրը: Դուք կտեսնեք սպիտակ պատուհան սև հետին պլանում:  

* Օգտագործեք մկնիկի աջ կոճակը (կամ CTRL-քաշել ձախ կոճակը), որպեսզի այնպես տեղաշարժեք տեսախցիկը, որ այն կարողանա դիտել տեսարանը տարբեր անկյուններից:

* Պատկերը խոշորացնելու և փոքրացնելու համար օգտագործեք երկու կոճակները կամ ALT/OPTION-քաշել կամ էլ մկնիկի ոլորելու անիվը: Դիպչեք էկրանին՝ հարվածեք կամ երկու մատով շրջեք; փորքացրեք/մեծացրեք պատկերը:

Նայեք տեխնիկական փաստաթղթի սկզբին, որպեսզի ծանոթանաք այն մանրուքներին, որոնք առնչվում են որոնման, փոխարինման և այլնի համար տեքստային խմբագրիչի օգտագործման ձևին: Խորհուրդ է տրվում օգտագործել Chrome դիտարկիչ՝ ծրագրերի ստեղծման համար, քանի որ այն ապահովում է ամենից օգտակար սխալի հաղորդագրությունները, չնայած որ ծրագրերը կարելի է գրել և աշխատեցնել բոլոր դիտարկիչներում էլ՝ ներառյալ smartphone-ները և tablet-ները:

Թույլատրել, որ մյուսներն էլ աշխատեցնեն Ձեր ծրագրերը

GlowScript խմբագրման էջի վրա սեղմեք Share this program -ի (Կիսվել այս ծրագրով) վրա, որպեսզի տեսնեք, թե ինչպես թույլ տաք, որ մյուս մարդիկ նույնպես աշխատեցնեն Ձեր ծրագիրը: Որպեսզի մարդիկ կարողանան աշխատեցնել Ձեր ծրագիրը՝ դրան կապվելով, ծրագիրը պետք է լինի հանրային թղթապանակում կամ էլ պետք է ուղարկված լինի հենց Ձեր վեբ կայք:

 

Ձախ լուսանցքում առկա տարբերակների նկարագրություններ

Ներածություն: Python-ի և VPython-ի հիմունքները:

Ձեռնարկ: Ավելի շատ տեղեկություն VPython-ի վերաբերյալ՝ ներառյալ անիմացիա ստեղծելը:

3D օբյեկտների նկարներ: Ինչի են նման օբյեկտները

Ընտրեք 3D օբյեկտ: Գլանի, տուփի և այլնի վերաբերյալ մանրամասներ: Սկսեք գլանից՝ ամբողջական պատկերացում կազմելու համար:

Windows, Ֆունկցիաներ և Ֆայլեր: Windows-ի ստեղծում/ձևափոխում; մկնիկի/ստեղնաշարի հետ կապված ֆունկցիաների կատարում; ֆայլերի կարդալ/գրել

Վեկտորական գործողություններ: Մեծություն, պրոյեկցիայի և վեկտորական արտադրյալ, ռոտոր և այլն:

Դիագրամներ: Տվյալների դիագրամներ կազմել:

ֆակտորիալ/combin: Հատուկ ֆունկցիաներ, որոնք օգտագործվում են հավանականության հաշվարկներում:

Հավելյալ տեղեկություն: GlowScript-ում VPython՝ գումարած VPython-ի պատմությունը:

Համոզված եղեք, որ կուսումնասիրեք շատ GlowScript ծրագրերի օրինակներ, որոնք գրվել են JavaScript-ի, CoffeeScript-ի, RapydScript-ի կամ VPython-ի օգտագործմամբ: VPython տարբերակը հիմնված է RapydScript Python-to-JavaScript կազմարկչի վրա: Ծրագրերից շատերի համար RapydScript-ը գրեթե նման է Python-ին, սակայն տարբերություններ կան, որոնք կարելի է տեսնել RapydScript փաստաթղթում:

ԶԳՈՒՇԱՑՈՒՄ

Մի՛ օգտագործեք <<wait>> (սպասել) որպես փոփոխականի անուն: Բոլոր GlowScript լեզուները (VPython, RapydScrpt, CoffeeScript, JavaScript) օգտագործում են <<wait>>-ը որպես հատուկ ազդանշան կազմարկման գործընթացի համար: VPython դեպքում այս ազդանշանը տեղադրված է Ձեզ համար այնտեղ, որտեղ որ անհրաժեշտ է:

 

Փորձառու ծրագրավորողների համար

Որպեսզի սկսնակ ծրագրավորողների գործը հեշտացվի, մեկնարկի համար անհրաժեշտ ամեն ինչն ապահովելու նպատակով GlowScript-ը դիֆոլթով ներմուծում է VPython-ի բոլոր ֆունկցիաները և ներառում ստանդարտ մաթեմատիկական ֆունկցիաներ, օրինակ՝ sqrt:

Դուք կարող եք կիրարկել <<import vis>> կամ <<import visual>>, որի դեպքում դուք պետք է անդրադառնաք <<vis.color>> կամ <<visual.color>>  բոլոր VPython երևույթների համար:

Ահա ևս մեկ ճանապարհ, որով կարելի է ընտրողաբար ներմուծել vis կամ visual մոդուլից՝

from vis import box, color # or (box, color)
box(color=color.orange)

Փաստաթուղթը գրված է  այնպես, կարծես թե <<from visual import *>> ներկա էր:

 

Նրանց համար, ովքեր օգտագործել են Դասական VPython

GlowScript համատեքստում  RapydScript և VPython ծրագրերի միջև տարբերությունն այն է, որ VPython տարբերակը փորձում է ճշգրիտ կերպով նմանակել Դասական VPython ծրագրերի շարահյուսությունը և իմաստաբանությունը, մինչդեռ RapydScript տարբերակը կիրառում է JavaScript և CoffeeScript ծրագրերի իմաստաբանությունը 3D օբյեկտների համար: Օրինակ՝ RapydScript ծրագրում գնդային առարկան ունի չափի հատկանիշ, սակայն չունի  շառավիղի հատկանիշ, և ինչպես որ տուփի դեպքում է, գնդի դեֆոլթ չափը 1x1x1 է: Նաև RapydScript ծրագրում առանցքի երկարության փոփոխությունը չի ազդում չափի վրա (բացի այն սլաքից, որն ունի հատուկ axis_and_length հատկանիշ), սակայն VPython ծրագրում, ինչպես որ Դասական VPython-ի դեպքում է, առանցքի երկարության փոփոխությունը նաև ազդում է օբյեկտի երկարության վրա (օբյեկտի չափի առաջին բաղադրիչը):

GlowScript-ը դիֆոլթով մշակում է VPython ծրագրերն այնպես, կարծես թե  նրանք ունեին հետևյալ արտահայտությունները ծրագրի սկզբից (որը պարտավոր չեք ներառել; դրանք կանտեսվեն):

from __future__ import division, print_function
from visual import *
from visual.graph import *

GlowScript-ը դիտարկում է 3/2-ը որպես 1.5- ինչպես Python 3.x-ում, ոչ թե 1 ինչպես Python 2.x լեզվում, և տպված արտահայտությունը պետք է տպվածի('hello') Python 3.x ձևն ընդունի, քան թե տպված 'hello'-ի Python 2.x ձևը:

Դասական VPython 6ում գրված շատ ծրագրեր առանց փոփոխության կաշխատեն GlowScript-ում Python-ում գրված փոփոխման ծրագրի մեջ աշխատելուց հետո: Այս ծրագիրը փոփոխում է (x,y,z) => vector(x,y,z) և obj.x => obj.pos.x: Այս փոփոխություններն անհրաժեշտ են, քանի որ GlowScript-ը չի ճանաչում (x,y,z) որպես վեկտոր, ոչ էլ obj.x-ը որպես obj.pos.x-ի համար սղագրություն: Ծրագիրը նաև փոփոխում է display => canvas և gdisplay => graph:

GlowScript միջավայրում դիրքը, չափը, առանցքը, գույնը վեկտորներ են, և դրանք ինչ-որ ձևով հատուկ վեկտորներ են, որոնք հետևում են փոփոխություններին, որպեսզի 3D տեսարանի ճիշտ փոխակերպանը հանգեցնեն, երբ օբյեկտի այս հատկանիշներից մեկը փոխվի: Այս համակառույցի մեկ արդյունքը սա է

         ball.pos += vector(1,2,3)

պետք է նորից գրվի, սակայն այսպես 

         ball.pos = ball.pos + vector(1,2,3)

Փոփոխման ծրագիրը կատարում է այս փոփոխությունները և նմանատիպ փոփոխություններ -=, *=  և /= համար: Ծրագիրը նաև փոխարկում է scene.mouse.getclick() => scene.waitfor('click'), որը աշխատում է երկու միջավայրերում էլ:

GlowScript-ում դուք կարող եք օգտագործել <<vec>> սղագրությունը <<vector>>-ի համար: Եթե ցանկություն ունեք օգտագործել GlowScript ծրագիր, որը պարունակում է <<vec>>, Դասական VPython միջավայրում, պարզապես ավելացրեք <<vec = vector>> արտահայտությունը ծրագրի սկզբում: 

Պակասություններ

VPython-ի մի քանի օբյեկտներ ներկա պահին հասանելի չեն GlowScript-ում՝ ուռուցիկություն, նիստեր, շրջանակ և 3D տեքստային օբյեկտ: GlowScript օբյեկտներ հանդիսացող գագաթը, եռանկյունը և քառանկյունը նիստերին ավելի հզոր այլընտրանք են ներկայացնում: Շրջանակը կարելի է շատ կիրառել GlowScript բաղադրյալ օբյեկտով: Դուրս մղված օբյեկտը (և ուղիների և ձևերի գրադարանները) տվյալ պահին ունի շատ ավելի քիչ հատկություններ, քան Դասական տարբերակը:

Տարբերությունների հետ գործ ունենալու մի ձևն այն է, որ պետք է ստուգել և՛ Դասական  VPython-ում և GlowScript  տարբերակում առկա <<տարբերակ>> փոփոխականի տարրերը և տարբեր բաներ անել տարբեր միջավայրերում՝ 

Classic VPython:    version is [‘X.Y’, ‘release’]
GlowScript VPython: version is [‘X.Y’, ‘glowscript’]

Կոր և կետերով օբյեկտներն ինչ-որ ձևով տարբեր են GlowScript միջավայրում, բայց մի փոքր ջանք գործադրելով՝ հնարավոր է օգտագործել այս օբյեկտներն այնպես, որ նրանք նաև աշխատեն Դասական VPython-ում: Ուշադրություն դարձրեք, որ GlowScript-ում կոր օբյեկտում կետերի ցանկը numpy շարք չէ, այնպես որ շրջանում անհրաժեշտ է փոխել բոլոր կետերը: 

Մկնիկի ֆունկցիաները գործածելու համար չի կարելի օգտագործել scene.getevent(), այլ պետք է օգտագործել scene.bind(), որը հասանելի է և՛ Դասական VPython 6-ում և՛ GlowScript-ում: Նաև հասանելի են scene.pause() և scene.waitfor('click'), ինչպես նաև առնչվող տարբերակները:

GlowScript միջավայրում հնարավոր է տեղադրել սարքիկներ, օրինակ՝  կոճակներ կամ սլայդերներ վեբ դիտարկչի էջի վրա, սակայն մեխանիզմը HTML-ի և jQuery-ի նույն մեխանիզմն է, ոչ թե Դասական VPython-ի wxPython բաղադրիչը: Ներկա պահին հեշտ ճանապարհ չկա, որով կարելի է այնպես ներկայացնել կոճակը կամ սլայդերը, որ այն աշխատի և՛ Դասական VPython միջավայրում և՛ GlowScript միջավայրում:

Հնարավոր չէ ներմուծել կամայական Python մոդուլներ, այնպիսին, ինչպիսիք է numpy-ին: Անհրաժեշտություն կառաջանա փոփոխության ենթարկել ցանկացած VPython ծրագիր, որն օգտագործում է numpy: Այդուհանդերձ,  շրջաններն արագ են JavaScript լեզվում, որի համար էլ կազմարկում են GlowScript ծրագրերը, այսպիսով, եթե դուք օգտագործում եք միայն numpy շարքի հսկման համար, կարող է ի վիճակի լինեք  հեշտորեն և արդյունավետ կերպով փոխարինել numpy հաշվարկը շրջանով: 

Տեքստային արտածում

Print statement-ը նման է Python print statement-ին, այդուհանդերձ նայեք հավելյալ տեքստային արտածման ունակությունների վերաբերյալ նյութերը, որոնք հասանելի են վեբ դիտարկչի միջավայրում:

Հավելյալ ունակություններ

Այս VPython Օգնությունը ներառում է GlowScript-ի կողմից առաջարկված հավելյալ ունակությունների վերաբերյալ մեկնաբանություններ, որոնք տվյալ պահին հասանելի չեն Դասական VPython-ում: Դուք կարող եք օգտագործել այս հատկանիշները՝ գիտակցելով, որ ստացվող GlowScript ծրագիրը կարող է չաշխատել Դասական միջավայրում, եթե որևէ փոփոխություն չարվի: Օրինակները ներառում են նիստերի ավելի հզոր ձև (օգտագործելով գագաթ, եռանկյուն և քառանկյուն առարկաներ), բաղադրյալ օբյեկտներ, որոնք կարելի է շատ արդյունավետ կերպով ներկայացնել, և օբյեկտը կրկնօրինակելու ունակություն: attach_trail և attach_arrow տարբերակներն ավելի ազդեցիկ փոխարինողներ են Դասական VPython make_trail-ի համար (որը նույնպես ապահովվում է): VPython-ի Jupyter տարբերակը ստեղծված է այնպես, որ այն օգտագործի GlowScript VPython-ի կողմից օգտագործվող շարահյուսությունը: 

Դուք կարող եք կամայականորեն կարգավորել ցանկացած առարկայի չափի հատկանիշը (կամ երկարությունը, կամ լայնությունը, կամ էլ բարձրությունը),  այսպիսով, օրինակ՝ դուք կարող եք այնպես անել, որ գլանի կամ կոնի տեսք ունեցող առարկան ունենա էլիպտիկ լայնակի հատույթ: Չնայած որ GlowScript-ն ապահովում է Դասական VPython էլիպսոիդ առարկան, դուք նաև կարող եք էլիպսոիդ ստանալ՝ պարզապես համապատասխան ձևով կարգավորելով գնդի ձև ունեցող առարկայի չափը (կամ երկարությունը, կամ լայնությունը, կամ էլ բարձրությունը): Անշուշտ, դուք կարող եք օգտվել GlowScript դիտարկչի միջավայրի HTML/jQuery հնարավորություններից, որպեսզի ստեղծեք հարուստ վեբ էջեր և կամընտրական կերպով VPython ծրագիր արտահանեք դեպի Ձեր վեբ կայք:

Ուշադրություն դարձրեք, որ գույնը՝ Դասական VPython-ում դիրքի, չափի և առանցքի նման, վեկտոր է GlowScript-ում, այնպես որ կարմիրը, կանաչը և կապույտը գույնի x, y և z բաղադրիչներն են:

Հատուկ շնորհակալություններ

Salvatore di Dio ցուցադրեց իր RapydGlow փորձում,
    (http://salvatore.pythonanywhere.com/RapydGlow)
թե ինքն ինչպես է կարողացել օգտագործել RapydScript Python-to-JavaScript կազմարկիչը GlowScript պատկերով: Սրա արդյունքում VPython (vpython.org) API-ն է կիրառվել glowscript.org-ում: Նա օպերատորի գերբեռնման համար տրամադրել է ֆայլ papercomp.js-ը, որն էլ հիմնված է Jürg Lehni-ի աշխատանքի վրա
     (PaperScript: http://scratchdisk.com/posts/operator-overloading).
Նա նաև հավաքել է այն ամենը, ինչը կարող է օգնել օպերատորի գերբեռնման դեպքում և ֆայլ transform-all.js-ում համաժամանակյա կոդ գրելու ունակությանը՝ հիմքում ունենալով  Bruno Jouhier-ի
    (Streamline: https://github.com/Sage/streamlinejs), ինչպես նաև
    Marijn Haverbeke-ի աշխատանքը (Acorn.js: https://github.com/marijnh):
Հնարավոր է ապահովել VPython API-ն դիտարկչում՝ շնորհիվ
    Alexander Tsepkov-ի (RapydScript: http://www.rapydscript.com) և
    Charles Law-ի աշխատանքին (դիտարկչի վրա հիմնված RapydScript: https://github.com/charleslaw/RapydScript_web):

Երբ 2011թ-ին Դևիդ Շերերը և Բրուս Շերվուդը սկսեցին GlowScript նախագիծը, Շերերը կիրառեց օպերատորը գերբեռնող և համաժամանակյա կոդ օգտագործող գրադարանները, որոնք գոյություն ունեին այդ ժամանակ: 2015թ-ին անհրաժեշտություն առաջացավ դեպի նոր սերնդի գրադարաններ անցում կատարելը, քանի որ որոշ դիտարկիչների վրա կազմարկումը տեղի չէր ունենում

VPython-ի վերաբերյալ նյութերը ստեղծել են Ռութ Չեբեին,Դևիդ Շերերը և Բրուս Շերվուդը: 

sourse: http://www.glowscript.org/docs/VPythonDocs/index.html