Topic: Blender en Python  (gelezen 14464 keer)


Offline JvL

  • Member
  • *
  • Berichten: 3,410
    • Bekijk profiel
    • Llyr Studio
« Reactie #15 Gepost op: 14 mei 2014, 19:51:01 pm »
Ja, ik heb de .blend voor het gemak gedownload maar hoe het met de diverse schermen werkt wist ik al.

De oefening was verder ook helemaal duidelijk dus ik neem aan dat het voor andere mensen ook wel duidelijk is.

Bedankt in ieder geval voor de uitleg.

Offline ijp

  • *
  • *
  • Berichten: 3,689
    • Bekijk profiel
    • IJpart
« Reactie #16 Gepost op: 14 mei 2014, 21:32:33 pm »
Nee voor mij niet ik heb namelijk een geheugen probleem en dit is teveel tekst voor mij dus ik ga hier afhaken :-[

Offline PKHG

  • Member
  • *
  • Berichten: 525
    • Bekijk profiel
« Reactie #17 Gepost op: 15 mei 2014, 10:42:39 am »
Zo graag commentaar op deze opdracht:
http://pkhg.nl/blender/start_python-1.blend

Mijn nieuwste idee hoe we dit gemakkelij kunnen doen ...

(het oude deel is er ook in te ontdekken) ;-)

Volgende opdrachten volgende week woe of iets later ..
Doei
       Peter

Offline PKHG

  • Member
  • *
  • Berichten: 525
    • Bekijk profiel
« Reactie #18 Gepost op: 15 mei 2014, 16:36:18 pm »
Sorry, had de vorig post niet meer kunnen zien ... na ja dubbel is soms ook niet slecht ;-)

voor het week end:
http://pkhg.nl/blender/start_python-1.blend

Maar ik heb net voor het eerst een Macro-recorder in 2.7 gebruikt en werkend gekregen en
dat komt natuurlijk heel gauw aan de orde ...

Hetgeen ik (zie boven) en hiervoor heb uitgelegd KAN automatisch worden gedaan!
Men drukt op een MACRO-OPNAME knop .... doet het een of ander .... stopt via de MACRO-OPNAME knop ...
En daarna kan men het geel gewoon aanroepen .... en gebeurt dus HETZELFDE noch een keer
Heerlijk om dan de script, die in een TEXT-WINDOW terecht kwam bekijken en
gewoon maar aan knutselen.
Tot gauw!
Prettig weekeinde
     Peter
Doei
       Peter

Offline JvL

  • Member
  • *
  • Berichten: 3,410
    • Bekijk profiel
    • Llyr Studio
« Reactie #19 Gepost op: 16 mei 2014, 07:41:10 am »
ik zal er in het weekend naar kijken want ik ben nu even druk met mijn werk.

Offline PKHG

  • Member
  • *
  • Berichten: 525
    • Bekijk profiel
« Reactie #20 Gepost op: 21 mei 2014, 08:40:10 am »
So terug van weg geweest, prachtige feest gefierd naar aanleiding van een 80jarige zus ;-).

Ik denk dat een volgende stat het uitproberen van de automatische Macro-recorder zal kunnen zijn ... dat ga ik deze week voorbereiden en in de *.blend stoppen.

Weet iedereen die dit leest hoe je een addon activeerd en waar je de source moet plaatsen?
Het laatste is vrij eenvoudig:
In de map war je 'blender.exe' te vinden is ...
zie plaatje!
tot ...






Kijk maar naar http://pkhg.nl/blender/start_python-1.blend (aangepasste versie!)


« Laatst bewerkt op: 21 mei 2014, 09:30:03 am door PKHG »
Doei
       Peter

Offline JvL

  • Member
  • *
  • Berichten: 3,410
    • Bekijk profiel
    • Llyr Studio
« Reactie #21 Gepost op: 21 mei 2014, 09:22:14 am »
Welkom terug!

Dat is allemaal bekend voor mij dus ik wacht de rest rustig af.

Offline PKHG

  • Member
  • *
  • Berichten: 525
    • Bekijk profiel
« Reactie #22 Gepost op: 21 mei 2014, 09:33:03 am »
Welkom terug!

Dat is allemaal bekend voor mij dus ik wacht de rest rustig af.

Je was te snel (hi hi).... zie boven,of hier, de links naar  http://pkhg.nl/blender/start_python-1.blend
Doei
       Peter

Offline JvL

  • Member
  • *
  • Berichten: 3,410
    • Bekijk profiel
    • Llyr Studio
« Reactie #23 Gepost op: 21 mei 2014, 21:18:54 pm »
Hoi Peter,

Ik heb het uitgeprobeerd en de macrorecorder werkt, alleen als ik de macro selecteer in de text window en ik run het script dan zie ik geen objecten verschijnen.
Weet jij misschien hoe dit komt.

Ik krijg verder geen foutmeldingen.
« Laatst bewerkt op: 21 mei 2014, 23:56:33 pm door JvL »

Offline PKHG

  • Member
  • *
  • Berichten: 525
    • Bekijk profiel
« Reactie #24 Gepost op: 22 mei 2014, 09:43:20 am »
Hi JvL
Nadat je de macro hebt afgesloten dan run je inderdaad de macro EERST
in het bijbehorende tekst venster. DIE DOET NOG NIETS behalve iets dat
Macro heet aan te maken!
Deze macro moet men nog aanroepen via: spatiebalk en in de zoekregel maar Macro typen en dan beneden Macro klikken ;-).

EDIT: toevoeging
Ik was/ben van plan dit tutorial
met een macro te voorzien ... 't is tot nu toe half gelukt.
De Cycles eigenschappen van een object vangen ging (nog) niet ...




De bedoeling is: gewoon met een Macro oproep een willekeurige tekst
laten ontstaan, opdat de Cycles render  werkt ....

na ja .. even zien of ik dat voor elkaar kan krijgen. het is iets wat met 'nodes' moet worden gedaan.
Nodes, is vermoedlijk een onderwerp, dat men vroeger of later zou moeten leren gebruiken ... (dus later ...)
« Laatst bewerkt op: 22 mei 2014, 17:31:46 pm door PKHG »
Doei
       Peter

Offline JvL

  • Member
  • *
  • Berichten: 3,410
    • Bekijk profiel
    • Llyr Studio
« Reactie #25 Gepost op: 23 mei 2014, 21:49:38 pm »
Hoi Peter, hij doet nog steeds niets als ik precies doe wat je zegt. Ook niet als de macro aanroep die in jouw .blend zit.

Als ik zelf een macro record dan zie ik de uitgevoerde acties niet in het script staan terwijl hij vervolgens wel gewoon de macro opslaat. Ik kan hem gewoon aanroepen in de text editor maar het lijkt wel of de macro recorder niet goed werkt bij mij.

Offline PKHG

  • Member
  • *
  • Berichten: 525
    • Bekijk profiel
« Reactie #26 Gepost op: 24 mei 2014, 10:18:09 am »
Hmm, inderdaad, zoiets had ik ook.
Om lui te zijn, had ik de instelling van de Macro 'opgeslagen' om het niet elke keer te activeren ...
En inderdaad kwamen de opdrachten daarna NIET meer  terecht in de Text-Macro-window ...

zo: dus de macro-recorder NIET via de instelling 'standaard geactiveerd' maken.
 (?)
Dan start_python-1.blend  lijkt het niet te doen. Oorzaak (?) let op welke layer je net ziet! Dus activeer de eerste layer.
Dan Run Script van de macro-text-window, dan spatie ==> Macro kiezen en laten doen.
Dan komt er bij mij een Cube en een Plane te voorschijn ...

OK 
Nu dus even iets over Python zelf, in start_python-1.blend is er een text-window geheten  Python en typen.
Bovenaan staat (als het goed is) dit:

geheel_getal = 72                       #int integer
decimaal_get = 3.14                     #float
text_1 = "Peter was hier"               #str string text
text_2 = 'Peter was hier nog een keer'  #str string text

raar_tuple = (1, -4, "hallo")           #tuple
een_lijst = [-7, 8, 4 , 5]       #list lijst
een_lexicon = {"P" : "Gragert", 3:5}    #dict dictionary woordenboek
.... (nog iets, later meer erover)

Deze onderdelen zijn standard Python opbjecte: gehele getallen ( zoals -4   0   23456 )
decimale getallen, moeten bij invoer dus een  .  (punt) bevatten
gewone texten (een geheel tussen aanhalings teken)

Iets wat "tuple" wordt genoemd namelijk tussen ronde haakjes met comma gescheiden dingen die Python snapt, deze gewone dingen (getallen text ...) maar ook Blender-Objecte!

Dan zijn er nog zo genoemde list  en dictionary objecten, een soort woordenboek ...

Zo, nu even iets doen:
start_python-1.blend openen, de muis in de Python console zetten en Ctrl - Pijlnaarboven tippen, gevolg het Python Console venster neemt het hele blender window in beslag (Ctrl - Pijlnaarboven) maakt het weer 'klein'..
Deze toets-combination is dus iets wat men toggle noemt, (in een browser de F11 is ook een toggle,probeer maar als je het nog nooit hebt gedaan)

We beginnen met een lijst in te voeren:

List_1 = [1, 2, 3, 4, 5,6,7,       8888           ]
Dan hebben we nu iets ter beschikking, de zo genoemde VARIABELE List_1 met een aantal getallen gevuld

tik nu maar: len(List_1)
Dat levert nu een getal, in dit geval een 8, omdat er 8 getallen in de list zitten!

Hoe haalt men nu getallen eruit?
Dat gaat zo:  List_1[ ???? ]  met ??? vervangen door 0 voor het EERSTE getal , 1 voor het TWEEDE getal, enz
Dat ligt er aan dat Python de nummering van lijsten (EN ook van tuples) bij 0 (nul) begint. Even wennen.

Samenvatten: lijsten (list) zijn objecten die een aantal (liefst gelijksoortige) objecten bevatten,
ook geen enkele is mogelijk, probeer maar: len([])
resultaat keurig netjes een 0, of niet?

So genoeg voor deze post ....
Volgende keer zullen wij met lijsten een beetje meer 'knutselen' , is bij programmeren namelijk hard nodig. Tot zo ...



Doei
       Peter

Offline JvL

  • Member
  • *
  • Berichten: 3,410
    • Bekijk profiel
    • Llyr Studio
« Reactie #27 Gepost op: 24 mei 2014, 18:05:37 pm »
Als ik het doe zoals jij nu beschreven hebt dan werkt het inderdaad. Dank je!

Vanavond kijk ik naar de nieuwe opdracht want ik heb nu even wat anders te doen.

Offline JvL

  • Member
  • *
  • Berichten: 3,410
    • Bekijk profiel
    • Llyr Studio
« Reactie #28 Gepost op: 26 mei 2014, 01:09:44 am »
Ik heb het gedeelte over List gedaan en het is helemaal duidelijk.

Offline PKHG

  • Member
  • *
  • Berichten: 525
    • Bekijk profiel
« Reactie #29 Gepost op: 26 mei 2014, 09:36:15 am »
In Python bestaat iets, dat men vaak met lijsten iets wil doen ...

Laten wij een 'eenvoudig' verzoek schetsen: Ik heb lijst nodig die de getallen van 1 tot 100 bevat ..
GRRR vreselijk 1,2,3, ..,99,100 allle getallen tussne [ ] typen? Nee, dat moet en kan makkelijker!
Zulk getallen reeksen maakt men vaak met het 'range'-commando!

Typ maar in de Python-console van Blender :   help(range)
dat levert een heleboel .. maar bovenaan staat het meest belangrijke, het gebruik:
range([start,] stop[, step]) -> range object

Uitleg:
-1- het commando heet range, voor een serie gehele getallen! te gebruiken als range( ..... )
-2- achter het ( kunnen 3 getallen staan waarvan het middelste, de stop verplicht is daarom NIET tuss [ ] gezet in de hulp
-3- men kan aangeven met een getal voor stop, waar men wil beginnen
-4- als men start en stop heeft (met , gescheiden kan men een derde (komma niet vergeten) voor een stapgrootte!
-5- men moet nog weten dat het getal stop NET NIET wordt geproduceerd

Zo even doen (natuurlijk in de Python console ;-) )
r1tot100 = range(1,101)
r1tot100 
tja levert weer range(1,101)  dus dat is een object, raar, even wennen

NU gebruiken: en dat is het waarover ik het hier heb
[getal for getal in r1tot100]
Dan zie je inderdaad  100 getallen van 1 tot 100 met komma gescheiden tussen [ en ] ;-)

UIt de console gekopieerd:
>>> r1tot100 = range(1,101)
>>> [getal for getal in r1tot100]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]

Heb je slechts alle even getallen 2,4, ... 100 nodig dan maar
evengetallen = [el for el in range(2,101,2)]
evengetallen
levert dan
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100]

Dus samenvatting
[naam for naam in gecamoefleerdelijst] levert een lijst met alle 'dingen' die in gecamoefleerdelijst zitten,
zoals b.v. range(11) ([1, ... , 10]) welke naam je voor naam gebruikt  kun je zelf kiezen!

Voor Blender zullen wij dan b.v. bpy.data.objects gebruiken!
Probeer maar:
[el.name for el in bpy.data.objects]
Ik kreeg dus net dit:

>>> [el.name for el in bpy.data.objects]
['Camera', 'Cube', 'Lamp', 'Pyramid']

(ik had net een pyramide met naam Pyramid in Blender aangemaakt!)
Dus nog een opmerking hiervoor nodig: el (heb ik als afkorting voor element) genomen maar wat is een el
in bpy.data.objects voor een iets? Klaar een Blender-object en dat heeft in dit geval een eigenschap "name" en DAT
heb ik dus maar meteen opgevraagd door el.name, in plaats van alleen el, te gaan gebruiken!

DIT ZAL EEN VAN DE WERKWIJZEN ZIJN, DIE MEN GAAT GEBRUIKEN!
Doei
       Peter