Topic: PHP module om .blend files te lezen  (gelezen 13442 keer)


Offline Zaph

  • Member
  • *
  • Berichten: 540
    • Bekijk profiel
    • Zaph webdevelopment
« Gepost 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!

Offline Nick Van den Broeck

  • Member
  • *
  • Berichten: 216
    • Bekijk profiel
    • Blender Education
« Reactie #1 Gepost 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?

Offline Zaph

  • Member
  • *
  • Berichten: 540
    • Bekijk profiel
    • Zaph webdevelopment
« Reactie #2 Gepost 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... ;)

Offline IJp

  • *
  • Berichten: 4,385
    • Bekijk profiel
    • IJpart
« Reactie #3 Gepost 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.

Offline Zaph

  • Member
  • *
  • Berichten: 540
    • Bekijk profiel
    • Zaph webdevelopment
« Reactie #4 Gepost 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...

Offline rozz

  • Member
  • *
  • Berichten: 1,851
    • Bekijk profiel
« Reactie #5 Gepost op: 22 april 2015, 07:41:09 am »
objecten van het ene blend file naar het andere te slepen/kopieeren zonder tussenkomst van blender...?

Offline Zaph

  • Member
  • *
  • Berichten: 540
    • Bekijk profiel
    • Zaph webdevelopment
« Reactie #6 Gepost 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...  ;)

Offline Zaph

  • Member
  • *
  • Berichten: 540
    • Bekijk profiel
    • Zaph webdevelopment
« Reactie #7 Gepost 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
« Laatst bewerkt op: 22 april 2015, 13:59:42 pm door Zaph »

Offline rozz

  • Member
  • *
  • Berichten: 1,851
    • Bekijk profiel
« Reactie #8 Gepost 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... ::)

Offline Nick Van den Broeck

  • Member
  • *
  • Berichten: 216
    • Bekijk profiel
    • Blender Education
« Reactie #9 Gepost 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.

Offline Zaph

  • Member
  • *
  • Berichten: 540
    • Bekijk profiel
    • Zaph webdevelopment
« Reactie #10 Gepost 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?  :)

Offline rozz

  • Member
  • *
  • Berichten: 1,851
    • Bekijk profiel
« Reactie #11 Gepost op: 24 april 2015, 13:27:48 pm »
Abracadabra.... :o....wou dat ik zover was...

Offline Zaph

  • Member
  • *
  • Berichten: 540
    • Bekijk profiel
    • Zaph webdevelopment
« Reactie #12 Gepost op: 24 april 2015, 15:15:35 pm »
Abracadabra.... :o....wou dat ik zover was...

Net als ik doen - gewoon 30 jaar oefenen!  ;D

Offline jbakker

  • Member
  • *
  • Berichten: 4
    • Bekijk profiel
« Reactie #13 Gepost 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 -

Offline JvL

  • Member
  • *
  • Berichten: 3,415
    • Bekijk profiel
    • Llyr Studio
« Reactie #14 Gepost 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.