UV mapping of extruded geometry was miscalculated.
- ExtrudeGeometry was documented to take a Three.Material for the
"material" and "extrudeMaterial" parameters, but the examples and
usage in TextGeometry showed that these were in fact indices into
the materials array. This meant that the tests such as "if (material)"
would evaluate to false if the index passed in was 0 (a very typical
index to choose :). Simply have the tests check against undefined and
update the documentation.
- Also, the code that converted a shape into a set of triangles was
miscalculating the UV offsets. It was correctly dividing the UV by
the bounding box of the old shape, but was forgetting to offset the
value from the minimum (which potentially led to negative UVs).
This should allow attaching of lights to objects. As a side effect, directional lights positions don't need to be normalized explicitly anymore.
Also changed viewport dimensions passed to render plugins to work with render targets with different dimensions than the screen framebuffer.
And fixed new dependencies in build script.
Also some refactoring in plugins.
Still not really satisfied with a solution, will need to handle somehow ordering of plugins (both among them and with respect to rest of rendering, this would be needed for example to be able to redo shadow maps as a plugin).
Dynamic terrain example now creates a specular texture from the color texture. That saves 2.17 MB download.
Just I had to drop materials pre-initialization, for some reason this doesn't play nice with having extra scene / render target :S.
In theory also detail normal texture could be computed from the color texture, just we need some nicer normal map filter (Gimp plugin has 9 different ones).
It was quite a pain - ArrayBuffers / Typed Arrays are fussy about byte alignment - but seems to be worth it.
Parsing times are down (modest gains for small objects / Firefox, bigger gains for large objects / Chrome, performance gains from 10% - 200%).
Also as a positive side effect, changing interleaved face arrays into uniform arrays seems to have helped a bit with gzip compression (about 6% smaller size for gzipped 526K Lucy).
Fixed Blender importer to work with Blender 2.60, add option for importing workers or non-worker models.
Fixed more examples to use worker-less format. All examples should work now.
Only Max exporter should be left to change.
Work-in-progress => do not merge yet.
OBJ converter, JSONLoader, BinaryLoader and some examples are done. Still need to do Blender exporter, SceneLoader and more examples.
Advantages:
- faster parse times
- bypass array initializer size limit in Firefox
- no more crashes in Chrome 15 (caused by too many concurrently active workers)
Disadvantages:
- more browser UI freezing
- multiple models tend to appear all at once with the last one (instead of popping up progressively)