2017 © Pedro Peláez
 

library render-3d

Wrapper library to help render preview images for common 3D file formats.

image

libre3d/render-3d

Wrapper library to help render preview images for common 3D file formats.

  • Thursday, January 25, 2018
  • by jonyo
  • Repository
  • 6 Watchers
  • 19 Stars
  • 384 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 2 Forks
  • 4 Open issues
  • 9 Versions
  • 7 % Grown

The README.md

Build Status codecov.io, (*1)

render-3d

Wrapper library to help render common 3d file formats., (*2)

Requirements

This requires a few things to work., (*3)

  • For Open SCAD files: Requires Open SCAD
  • For the actual rendering, requires POV Ray
  • Composer
  • ~~stl2pov v3.2.0+ python script, part of stltools)~~
    • No longer required as of 1.2.0. See issue #4 for details.

Installation

If you are using composer, just add "libre3d/render-3d": "~1.2.0" to the require section, then run composer update., (*4)

Or if you do not use composer, clone this repository. Then get composer. Then run composer install from the root folder of this library to install dependencies., (*5)

Usage

If you don't already have the composer vendor autoload PHP file included in your project, you will need to include it like:, (*6)

require 'render-3d/vendor/autoload.php';

That path may need to be adjusted., (*7)

Then you will need to initialize the Render3d object and let it know the locations of a few things (note that this is a quick example, there are many options and different ways that files can be rendered using this library):, (*8)


$render3d = new \Libre3d\Render3d\Render3d(); // this is the working directory, where it will put any files used during the render process, as well as the final // rendered image. $render3d->workingDir('/path/to/working/folder/'); // Set paths to the executables on this system $render3d->executable('openscad', '/path/to/openscad'); $render3d->executable('povray', '/path/to/povray'); try { // This will copy in your starting file into the working DIR if you give the full path to the starting file. // This will also set the fileType for you. $render3d->filename('/path/to/starting/stlfile.stl'); // Render! This will do all the necessary conversions as long as the render engine (in this // case, the default engine, PovRAY) "knows" how to convert the file into a file it can use for rendering. // Note that this is a multi-step process that can be further broken down if you need it to. $renderedImagePath = $render3d->render('povray'); echo "Render successful! Rendered image will be at $renderedImagePath"; } catch (\Exception $e) { echo "Render failed :( Exception: ".$e->getMessage(); }

The main workflow:

  • Convert to STL file format (if not starting with an STL file)
  • Convert the STL to a POVRay file format.
  • Render an image using povray and a common scene template.

Options

The $Render3d->render() method takes an optional second parameter for $options, which is an array of options. You can also set the options before hand calling $Render3d->options(['option1' => 'val1']);, (*9)

Here are a few options of note: * buffer This controls what is done with output from the commands run on the command line. The valid values are: * Render3d::BUFFER_OFF - Default value. Nothing is displayed and nothing is buffered. * Render3d::BUFFER_ON - Buffers the output, and saves so that you can later retrieve it with $Render3d->getBufferAndClean() * Render3d::BUFFER_STD_OUT - Sends any output directly to std out (sends to the browser or console) * width - The width of the rendered image, in pixels. Defaults to 1600 * height - The height of the rendered image, in pixels. Defaults to 1200 * fwrite_buffer_size - integer - Buffer size in bytes, when writing the POV file (and possibly others). Some systems may see better performance with a different buffer size other than the default. Defaults to 8000 (set to 0 for no fwrite buffering), (*10)

Version & Changelog

We adhere to the Semantic Versioning Specification (SemVer)., (*11)

Changelog: We use Github issues and milestones to keep track of changes from version to version. To see what changes were in a specific version, look at the closed issues for the corresponding milestone., (*12)

Credit

Origin, (*13)

This library started out as a port of a bash script, though we mainly took the overall "how it works" and re-wrote most of the fine details. The original page talking about it is no longer around, but luckily we found a cached version on Wayback, (*14)

You can find the original files still (as of the last time I checked) at http://diyhpl.us/~bryan/irc/stl2pov/ - the render.sh is the overall file that does everything., (*15)

We took the "idea" of how the shell script did things, and ported it into a PHP library that made system calls. The look of the rendered images was lacking, so the scene's template file was almost completely changed. We found that POVRay has a lot of potential behind it if you take the time to learn how to set up the scene and do a little math to figure out the best camera angle and such., (*16)

src/Scenes/axes_macro.inc, (*17)

Like the bash script, we also stuck to using the AxesAndGridMacro to create a nice grid. We didn't change the inc file but we drastically changed how it was used, it mainly just renders a grid on the floor now. We also made it change the grid size dynamically depending on the size of the model, it will always be in a scale of 10, like 10 mm, 10cm, etc. depending on how large the model is., (*18)

stl2pov, (*19)

Early versions relied on the stl2pov python script. In version 1.2.0 the conversion has been ported into this PHP script., (*20)

We want to give a special thanks to the author of stltools, he has been a great help with our quest to port the functionality into PHP by answering our questions in-depth. If you are looking for conversion tools that use Python, we highly recommend stltools., (*21)

The Versions

25/01 2018

dev-master

9999999-dev http://github.com/libre3d/render-3d

Wrapper library to help render preview images for common 3D file formats.

  Sources   Download

LGPL LGPL-2.1-only

The Requires

  • php >=5.4.0
  • ext-gd *

 

The Development Requires

render stl scad

25/01 2018

dev-fix-codecov

dev-fix-codecov http://github.com/libre3d/render-3d

Wrapper library to help render preview images for common 3D file formats.

  Sources   Download

LGPL-2.1-only

The Requires

  • php >=5.4.0
  • ext-gd *

 

The Development Requires

render stl scad

24/01 2018

dev-update-composer-license

dev-update-composer-license http://github.com/libre3d/render-3d

Wrapper library to help render preview images for common 3D file formats.

  Sources   Download

LGPL-2.1-only

The Requires

  • php >=5.4.0
  • ext-gd *

 

The Development Requires

render stl scad

17/06 2017

1.2.1

1.2.1.0 http://github.com/libre3d/render-3d

Wrapper library to help render preview images for common 3D file formats.

  Sources   Download

LGPL

The Requires

  • php >=5.4.0
  • ext-gd *

 

The Development Requires

render stl scad

30/01 2015

1.2.0

1.2.0.0 http://github.com/libre3d/render-3d

Wrapper library to help render preview images for common 3D file formats.

  Sources   Download

LGPL

The Requires

  • php >=5.4.0
  • ext-gd *

 

The Development Requires

render stl scad

07/01 2015

1.1.0

1.1.0.0 http://github.com/libre3d/render-3d

Wrapper library to help render preview images for common 3D file formats.

  Sources   Download

LGPL

The Requires

  • php >=5.4.0
  • ext-gd *

 

The Development Requires

render stl scad

07/01 2015

1.0.2

1.0.2.0 http://github.com/libre3d/render-3d

Wrapper library to help render preview images for common 3D file formats.

  Sources   Download

LGPL

The Requires

  • php >=5.4.0
  • ext-gd *

 

The Development Requires

render stl scad

07/01 2015

1.0.1

1.0.1.0 http://github.com/libre3d/render-3d

Wrapper library to help render preview images for common 3D file formats.

  Sources   Download

LGPL

The Requires

  • php >=5.4.0
  • ext-gd *

 

The Development Requires

render stl scad

18/12 2014

1.0.0

1.0.0.0 http://github.com/libre3d/render-3d

Wrapper library to help render preview images for common 3D file formats.

  Sources   Download

LGPL

The Requires

  • php >=5.4.0
  • ext-gd *

 

The Development Requires

render stl scad