Dutch Blender Community

Coding => Afgeronde scripts en thema's => Topic gestart door: Zaph op 17 april 2015, 23:45:41 pm

Titel: PHP module om .blend files te lezen
Bericht door: Zaph op 17 april 2015, 23:45:41 pm
Ter info voor wie er wat mee kan/wil - ik ben bezig een PHP module te maken om .blend files te kunnen lezen. Het idee is om er een freeware gebeuren van te maken.

Je kunt bijvoorbeeld afbeeldingen die in de file zitten weergeven, en verder alle properties van alles wat er in zit. Misschien wat voor Nick's project, bijvoorbeeld.

Als je er iets mee zou willen, dan hoor ik graag wat zodat ik daar een interface voor kan maken!
Titel: Re: PHP module om .blend files te lezen
Bericht door: Nick Van den Broeck op 18 april 2015, 02:18:46 am
Ik voel me alvast aangesproken, maar leg misschien eens wat meer uit over de bedoeling.

Ik gok dat het idee niet is om een 3D weergave van je file te maken. Daarvoor heb je dingen zoals blend4web en sketchfab. Of zou het bijvoorbeeld mogelijk zijn om via PHP uit de blendfile een voorbeeld te halen (ongeveer zoals verkenner kennelijk een figuurtje weet te plakken op blendfiles)
Of denk je aan een boomstructuur uit de inhoud te halen? Ongeveer wat je in Blender te zien krijgt als je vanuit een andere blendfile wil importeren?

Ik ben benieuwd wat je ervan gaat maken?
Titel: Re: PHP module om .blend files te lezen
Bericht door: Zaph op 18 april 2015, 02:26:31 am
Je moet meer richting de boomstructuur denken - en misschien dat het na een tijdje ook lukt om .blend files te schrijven, waarmee je dus in de ene file een selectie zou kunnen maken die je in de andere file weggeschreven wilt hebben. Of zo. Het is allemaal nog heel pril... ;)
Titel: Re: PHP module om .blend files te lezen
Bericht door: IJp op 18 april 2015, 10:04:58 am
Als ik het goed begrijp is het een programmatje om heel simpel alles op te zoeken in je blend.file
Als dat zo is lijkt me handig.
Titel: Re: PHP module om .blend files te lezen
Bericht door: Zaph op 22 april 2015, 01:38:16 am
De basis is klaar, maar er wordt wel een hoop data ingelezen, zeg!  :o

Een heel simpele .blend van 600KB duurt 20 secondes, maar dan heb ik wel de thumbnail eruit weten te halen. Dat laatste is gelukkig ook te doen zonder de hele file in te lezen - verder zie ik ik eigenlijk op het moment helaas een beetje weinig toepassingsmogelijkheden...
Titel: Re: PHP module om .blend files te lezen
Bericht door: rozz op 22 april 2015, 07:41:09 am
objecten van het ene blend file naar het andere te slepen/kopieeren zonder tussenkomst van blender...?
Titel: Re: PHP module om .blend files te lezen
Bericht door: Zaph op 22 april 2015, 12:27:46 pm
Dat kan, maar waarom zou je dat via een website willen doen? Dan kan veel makkelijker in Blender zelf...  ;)
Titel: Re: PHP module om .blend files te lezen
Bericht door: Zaph op 22 april 2015, 13:56:09 pm
Voor de PHP'ers die de thumbnail uit een .blend willen halen: http://blender.zaph.nl/BlenderThumbnail.zip
Titel: Re: PHP module om .blend files te lezen
Bericht door: rozz op 22 april 2015, 17:39:01 pm
Dat kan, maar waarom zou je dat via een website willen doen? Dan kan veel makkelijker in Blender zelf...  ;)

omdat het kan... ::)
Titel: Re: PHP module om .blend files te lezen
Bericht door: Nick Van den Broeck op 23 april 2015, 22:21:26 pm
Mooie code.

Begrijp ik het goed dat je de thumbnail pixel voor pixel terug reconstrueert uit de bytes?

Het enige dat ik niet doorheb is het $this->type != 'TEST' criterium in de do-while lus. Vooral omdat je zelf nergens de type variabele als 'TEST' definieert.
Titel: Re: PHP module om .blend files te lezen
Bericht door: Zaph op 24 april 2015, 12:53:09 pm
Dat klopt helemaal. Textures en dergelijke staan er als JPG- of PNG-bestand compleet in, en kunnen zo op schijf bewaard worden, maar de thumbnail is een breedte x hoogte array van rgba-waardes.

Grappig was te zien dat de achtergrond niet in de thumbnail zit - het is eigenlijk een 128x128 render met een transparante achtergrond. Daardoor kun je met de functie setBackgroundColor zelf een andere achtergrondkleur dan de standaard 50% grijs kiezen.

Een .blend file bestaat uit een aantal blokken gegevens van bepaalde types. Elk blok wordt voorafgegaan door een header met onder andere dat type, en de grootte van dat blok, en deze wordt gelezen in readHeader. Daar wordt ook $this->type op die waarde gezet.

Dat het thumbnail-blok het type 'TEST' heeft is omdat oude versies van Blender over hun nek gaan van een onbekend type, en TEST blijkbaar wel bekend maar nog niet gebruikt was. Hoezo verregaand backwards compatibel?  :)
Titel: Re: PHP module om .blend files te lezen
Bericht door: rozz op 24 april 2015, 13:27:48 pm
Abracadabra.... :o....wou dat ik zover was...
Titel: Re: PHP module om .blend files te lezen
Bericht door: Zaph op 24 april 2015, 15:15:35 pm
Abracadabra.... :o....wou dat ik zover was...

Net als ik doen - gewoon 30 jaar oefenen!  ;D
Titel: Re: PHP module om .blend files te lezen
Bericht door: jbakker op 26 april 2015, 16:03:54 pm
Hey Allen,

Kennen jullie Blender-aid? Die heeft al de mogelijkheid om het bovengenoemde te doen. Het is door ons ontwikkeld samen met de blender institute voor de Open film Sintel. Het kan een volledige film repository scannen in enkele 10-tallen van seconden en hier kan je vanalles in doen. Een gedeelte van Blender-aid wordt ook als basis gebruikt voor de BAM (https://gooseberry.blender.org/bam-building-the-asset-manager/). Het systeem waar de productie bestanden van gooseberry geshared kan worden met meerdere studio's.

Het is dan niet PHP, maar is zeker de moeite waard om ervan te leren. Het kan namelijk ook bestanden updaten zonder dat je blender hoeft op te starten.
https://code.google.com/p/blender-aid/

Groeten,
Jeroen
 - At Mind -
Titel: Re: PHP module om .blend files te lezen
Bericht door: JvL op 26 april 2015, 18:43:46 pm
Bedankt! Ik had het al eens voorbij zien komen maar nog niet de tijd genomen om er verder in te duiken maar dat ga ik nu zeker doen.
Titel: Re: PHP module om .blend files te lezen
Bericht door: Zaph op 26 april 2015, 23:10:04 pm
Hey Allen

Leuk - ik heb je site meerdere keren geraadpleegd voor de basisinfo m.b.t. het bestandsformaat! Ik was me er niet van bewust dat je nog steeds met Blender aktief was... :)
Titel: Re: PHP module om .blend files te lezen
Bericht door: Ellajiw op 27 april 2015, 20:19:58 pm
Ah, At mind! Jullie waren in december ook bij de Blender meetup in Amsterdam toch? Toen vertelden jullie al over jullie werk met de Compositor. Vond het erg leuk om te horen over jullie werk bij het Blender hoofdkwartier!
Titel: Re: PHP module om .blend files te lezen
Bericht door: PKHG op 28 april 2015, 10:00:04 am
Ter info voor wie er wat mee kan/wil - ik ben bezig een PHP module te maken om .blend files te kunnen lezen. Het idee is om er een freeware gebeuren van te maken.

Je kunt bijvoorbeeld afbeeldingen die in de file zitten weergeven, en verder alle properties van alles wat er in zit. Misschien wat voor Nick's project, bijvoorbeeld.

Als je er iets mee zou willen, dan hoor ik graag wat zodat ik daar een interface voor kan maken!

Ik ben laatst weer met PHP aan de slag, ik gebruik namelijk PmWiki, helemaal text-based in PHP geschreven ...
Heb net mijn Kalender - script voor de nieuwste PHP geschikt gemaakt, de /e swich is namelijk STERK deprecated ...

Zo nu mijn vraag: waarom PHP en niet Python (of Blender zelf?)?
Denk je eraan een *.blend te krijgen en toch nu naar de inhoud te kijken?
heb net je zip ... gehaald moet even gaan spieken hoe dat er uit ziet in PHP ;-)
Titel: Re: PHP module om .blend files te lezen
Bericht door: PKHG op 28 april 2015, 10:35:13 am
Zo ziet een hedendaagse *.blend er uit;
1f8b 0800 0000 0000 040b ec9d 0d7c 1d55  .............|.U
00000010: 9dfe 272f 6d43 455a 05b4 1694 4811 aa20  ..'/mCEZ....H..
00000020: 0205 892c 34af 2d01 0ad4 b648 c022 5408  ...,4.-....H."T.
00000030: b450 526c 8b04 566d 44dd 4f64 9537 452b  .PRl..VmD.Od.7E+
00000040: 2b10 c197 ba2e 2b2a ee3f b0d8 9652 352b  +.....+*.?...R5+
00000050: e082 2b12 df56 5c51 bbbe b2bb 2a11 76cd  ..+..V\Q....*.v.
00000060: fffc e639 cf3c 3327 7393 9bd0 97a4 9d81  ...9.<3's.......
<snip>0: bf1b 7986 38cb 8cdb 0818 09a3 6034 8c21  ..y.8.......`4.!
00014350: 7c64 58e0 3f4f 583f e259 1a0b e360 bcb7  |dX.?OX?.Y...`..
00014360: 554e 968f 8ef0 b6df ff00 d790 f646 1c04  UN...........F..
00014370: 0700                                     ..

^^^^ kan ik een TEST ontdekken ;-(

Dus je zou nog moeten vertellen voor welke versie blend files je bezig bent en een voorbeeld blend ter beschikking stellen?

Groeten
     Peter
Titel: Re: PHP module om .blend files te lezen
Bericht door: Zaph op 28 april 2015, 13:37:30 pm
Zo nu mijn vraag: waarom PHP en niet Python (of Blender zelf?)?

Omdat ik het leuk vind dit soort dingen uit te zoeken, en ik voornamelijk in PHP programmeer.

Het werkt als het goed is met alle versies .blend files, al heb ik het niet met oudere versies getest.
Titel: Re: PHP module om .blend files te lezen
Bericht door: PKHG op 28 april 2015, 14:53:52 pm
Zo nu mijn vraag: waarom PHP en niet Python (of Blender zelf?)?

Omdat ik het leuk vind dit soort dingen uit te zoeken, en ik voornamelijk in PHP programmeer.

Het werkt als het goed is met alle versies .blend files, al heb ik het niet met oudere versies getest.

Klaar, iets ontdekken en zo ...

Maar graag een *.blend met TEST er bij? of hoe maakt men dat zelf?

Groeten
         Peter
Titel: Re: PHP module om .blend files te lezen
Bericht door: Zaph op 28 april 2015, 15:15:49 pm
Dat wordt automatisch bij het opslaan toegevoegd aan elke .blend file sinds versie...weet ik niet, maar al een aardig tijdje.
Titel: Re: PHP module om .blend files te lezen
Bericht door: PKHG op 01 mei 2015, 11:07:32 am
Dat wordt automatisch bij het opslaan toegevoegd aan elke .blend file sinds versie...weet ik niet, maar al een aardig tijdje.
Heb nog hulp nodig, wat moet je doen opdat er een TEST in de *.blend file komt?
Heb je het al verteld, dan graag nog een keer voor mij  ;)
Titel: Re: PHP module om .blend files te lezen
Bericht door: Zaph op 01 mei 2015, 12:46:42 pm
...wat moet je doen opdat er een TEST in de *.blend file komt?
Niks, want
Citaat
Dat wordt automatisch bij het opslaan toegevoegd aan elke .blend file...
Titel: Re: PHP module om .blend files te lezen
Bericht door: PKHG op 01 mei 2015, 16:52:57 pm
...wat moet je doen opdat er een TEST in de *.blend file komt?
Niks, want
Citaat
Dat wordt automatisch bij het opslaan toegevoegd aan elke .blend file...
Ik was blijkbaar onduidelijk.
Dat je gewoon moet saven is duidelijk, (dat is dus niks doen) maar er moet toch ergens voor gezorgd worden dat een plaatje in de blend zit DAT bedoel ik.
HOE en WAAR moet er een plaatje in de blender sessie worden gemaakt.
Of maak een link naar een blend bestand waar zon TEST in zit
Titel: Re: PHP module om .blend files te lezen
Bericht door: Zaph op 02 mei 2015, 04:03:53 am
Serieus - voor de derde keer: dat gaat vanzelf. Standaard.
Titel: Re: PHP module om .blend files te lezen
Bericht door: PKHG op 02 mei 2015, 19:48:18 pm
Serieus - voor de derde keer: dat gaat vanzelf. Standaard.
Nee, ik heb intern gekeken, NIETS te zien...

Einde poging mee te doen, sorry.
Titel: Re: PHP module om .blend files te lezen
Bericht door: Zaph op 03 mei 2015, 02:53:01 am
Sorry, maar dan heb je niet goed gekeken, of met de verkeerde tool, of in een te oude .blend file.

Download de source van Blender eens, en kijk in /source/blender/imgbuf/thumbs_blend.c op regel 91 en verder.

Nogmaals: het is een standaard onderdeel van (recente) .blend files, en je hoeft niks anders te doen dan het bestand op te slaan. Ook de thumbnails in Windows verkenner komen uit het TEST-block.

Het spijt me dat je het blijkbaar zelf niet kunt vinden, maar dat is geen reden om boos op mij te worden.