From d9de7e7a515e5fb3c07fb0514e70798a2a1d245a Mon Sep 17 00:00:00 2001 From: Amber Roy Date: Mon, 6 Jun 2016 11:34:29 -0700 Subject: [PATCH] Add verticalAlign property * verticalAlign puts the origin at the bottom, middle (default), or top of the Altspace enclosure. * Added example than sets verticalAlign='bottom' and also shows how to load OBJ and COLLADA models. --- README.md | 5 +- dist/aframe-altspace-component.js | 20 +- dist/aframe-altspace-component.min.js | 2 +- examples/index.html | 1 + examples/test-vertical-align/index.html | 38 ++ .../models/crate/README.md | 5 + .../models/crate/crate.jpg | Bin 0 -> 15217 bytes .../models/crate/crate.mtl | 12 + .../models/crate/crate.obj | 24 + .../models/tree1/tex/shadow-circle.png | Bin 0 -> 2214 bytes .../models/tree1/tree1.dae | 347 +++++++++++++ .../models/tree2/tex/shadow-circle.png | Bin 0 -> 3632 bytes .../models/tree2/tree2.dae | 458 ++++++++++++++++++ .../test-vertical-align/peach-gradient.jpg | Bin 0 -> 33067 bytes index.js | 20 +- package.json | 2 +- 16 files changed, 926 insertions(+), 8 deletions(-) create mode 100644 examples/test-vertical-align/index.html create mode 100644 examples/test-vertical-align/models/crate/README.md create mode 100644 examples/test-vertical-align/models/crate/crate.jpg create mode 100644 examples/test-vertical-align/models/crate/crate.mtl create mode 100644 examples/test-vertical-align/models/crate/crate.obj create mode 100644 examples/test-vertical-align/models/tree1/tex/shadow-circle.png create mode 100644 examples/test-vertical-align/models/tree1/tree1.dae create mode 100644 examples/test-vertical-align/models/tree2/tex/shadow-circle.png create mode 100644 examples/test-vertical-align/models/tree2/tree2.dae create mode 100644 examples/test-vertical-align/peach-gradient.jpg diff --git a/README.md b/README.md index 740f7f8..b0560e1 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ Note that when running in Altspace, the scene will not be synchronized between u | Property | Description | Default Value | | -------- | ----------- | ------------- | | `usePixelScale` | Treat a unit as a CSS Pixel, and have your scene scale with the scale of the AltspaceVR web browser. This is the default behavior in AltspaceVR for three.js apps. In A-Frame, however, the default value is `false`, as units are in meters by default. | `false` +| `verticalAlign` | Puts the scene origin at the bottom, middle, or top of the Altspace enclosure. If your scene seems to be floating in midair, try setting this to 'bottom'. | `middle` ### Usage Add the "altspace" parameter on your `` like so: `` @@ -23,8 +24,8 @@ Install and use by directly including the [browser files](dist): ```html My A-Frame Scene - - + + diff --git a/dist/aframe-altspace-component.js b/dist/aframe-altspace-component.js index 233943e..e2b7ccf 100644 --- a/dist/aframe-altspace-component.js +++ b/dist/aframe-altspace-component.js @@ -54,10 +54,11 @@ AFRAME.registerComponent('altspace', { /** - * usePixelScale will allow you to use A-Frame units as CSS pixels. This is the default behavior for three.js apps, but not for A-Frame apps. + * usePixelScale will allow you to use A-Frame units as CSS pixels. This is the default behavior for three.js apps, but not for A-Frame apps. verticalAlign puts the origin at the bottom, middle (default), or top of the Altspace enclosure. */ schema: { - usePixelScale: { type: 'boolean', default: 'false'} + usePixelScale: { type: 'boolean', default: 'false'}, + verticalAlign: { type: 'string', default: 'middle'} }, /** @@ -121,6 +122,21 @@ scene.scale.multiplyScalar(e.pixelsPerMeter); }); } + var verticalAlign = this.data.verticalAlign; + if (verticalAlign !== 'center') { + altspace.getEnclosure().then(function(e) { + switch (verticalAlign) { + case 'bottom': + scene.position.y -= e.innerHeight / 2; + break; + case 'top': + scene.position.y += e.innerHeight / 2; + break; + default: + console.warn('Unexpected value for verticalAlign: ', this.data.verticalAlign); + } + }); + } var renderer = this.el.renderer = altspace.getThreeJSRenderer(); var noop = function() {}; renderer.setSize = noop; diff --git a/dist/aframe-altspace-component.min.js b/dist/aframe-altspace-component.min.js index 700121d..7df37c7 100644 --- a/dist/aframe-altspace-component.min.js +++ b/dist/aframe-altspace-component.min.js @@ -1 +1 @@ -!function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={exports:{},id:n,loaded:!1};return e[n].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var r={};return t.m=e,t.c=r,t.p="",t(0)}([function(e,t){if("undefined"==typeof AFRAME)throw new Error("Component attempted to register before AFRAME was available.");AFRAME.registerComponent("altspace",{schema:{usePixelScale:{type:"boolean","default":"false"}},init:function(){return this.el.object3D instanceof THREE.Scene?void(window.altspace&&window.altspace.inClient&&(this.initRenderer(),this.initCursorEvents())):void console.warn("aframe-altspace-component can only be attached to a-scene")},update:function(e){},remove:function(){},pause:function(){},play:function(){},initRenderer:function(){var e=this.el.object3D;this.data.usePixelScale||altspace.getEnclosure().then(function(t){e.scale.multiplyScalar(t.pixelsPerMeter)});var t=this.el.renderer=altspace.getThreeJSRenderer(),r=function(){};t.setSize=r,t.setPixelRatio=r,t.setClearColor=r,t.clear=r,t.enableScissorTest=r,t.setScissor=r,t.setViewport=r,t.getPixelRatio=r,t.getMaxAnisotropy=r,t.setFaceCulling=r,t.context={canvas:{}},t.shadowMap={}},initCursorEvents:function(){var e=this.el.object3D,t=document.querySelector("a-cursor")||document.querySelector("a-entity[cursor]");t&&(t.setAttribute("material","transparent",!0),t.setAttribute("material","opacity",0));var r=function(e,r){r&&r.emit(e,{target:r}),t&&t.emit(e,{target:r})},n=null;e.addEventListener("cursordown",function(e){n=e.target,r("mousedown",e.target.el)}),e.addEventListener("cursorup",function(e){r("mouseup",e.target.el),e.target.uuid===n.uuid&&r("click",e.target.el),n=null}),e.addEventListener("cursorenter",function(e){e.target.el.addState("hovered"),t&&t.addState("hovering"),r("mouseenter",e.target.el)}),e.addEventListener("cursorleave",function(e){e.target.el.removeState("hovered"),t&&t.removeState("hovering"),r("mouseleave",e.target.el)})}})}]); \ No newline at end of file +!function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={exports:{},id:r,loaded:!1};return e[r].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t){if("undefined"==typeof AFRAME)throw new Error("Component attempted to register before AFRAME was available.");AFRAME.registerComponent("altspace",{schema:{usePixelScale:{type:"boolean","default":"false"},verticalAlign:{type:"string","default":"middle"}},init:function(){return this.el.object3D instanceof THREE.Scene?void(window.altspace&&window.altspace.inClient&&(this.initRenderer(),this.initCursorEvents())):void console.warn("aframe-altspace-component can only be attached to a-scene")},update:function(e){},remove:function(){},pause:function(){},play:function(){},initRenderer:function(){var e=this.el.object3D;this.data.usePixelScale||altspace.getEnclosure().then(function(t){e.scale.multiplyScalar(t.pixelsPerMeter)});var t=this.data.verticalAlign;"center"!==t&&altspace.getEnclosure().then(function(n){switch(t){case"bottom":e.position.y-=n.innerHeight/2;break;case"top":e.position.y+=n.innerHeight/2;break;default:console.warn("Unexpected value for verticalAlign: ",this.data.verticalAlign)}});var n=this.el.renderer=altspace.getThreeJSRenderer(),r=function(){};n.setSize=r,n.setPixelRatio=r,n.setClearColor=r,n.clear=r,n.enableScissorTest=r,n.setScissor=r,n.setViewport=r,n.getPixelRatio=r,n.getMaxAnisotropy=r,n.setFaceCulling=r,n.context={canvas:{}},n.shadowMap={}},initCursorEvents:function(){var e=this.el.object3D,t=document.querySelector("a-cursor")||document.querySelector("a-entity[cursor]");t&&(t.setAttribute("material","transparent",!0),t.setAttribute("material","opacity",0));var n=function(e,n){n&&n.emit(e,{target:n}),t&&t.emit(e,{target:n})},r=null;e.addEventListener("cursordown",function(e){r=e.target,n("mousedown",e.target.el)}),e.addEventListener("cursorup",function(e){n("mouseup",e.target.el),e.target.uuid===r.uuid&&n("click",e.target.el),r=null}),e.addEventListener("cursorenter",function(e){e.target.el.addState("hovered"),t&&t.addState("hovering"),n("mouseenter",e.target.el)}),e.addEventListener("cursorleave",function(e){e.target.el.removeState("hovered"),t&&t.removeState("hovering"),n("mouseleave",e.target.el)})}})}]); \ No newline at end of file diff --git a/examples/index.html b/examples/index.html index eb2759a..63b4eb8 100644 --- a/examples/index.html +++ b/examples/index.html @@ -26,6 +26,7 @@

A-Frame aframe-altspace-component Component

Meter Scale Pixel Scale Cursor Events + Vertical Align
diff --git a/examples/test-vertical-align/index.html b/examples/test-vertical-align/index.html new file mode 100644 index 0000000..f1ce931 --- /dev/null +++ b/examples/test-vertical-align/index.html @@ -0,0 +1,38 @@ + + + + + Aframe Altspace Component - Test Vertical Align + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/examples/test-vertical-align/models/crate/README.md b/examples/test-vertical-align/models/crate/README.md new file mode 100644 index 0000000..e74d81a --- /dev/null +++ b/examples/test-vertical-align/models/crate/README.md @@ -0,0 +1,5 @@ +# Crate + +Made by Tyro Smith, free for personal and commercial use. + +Source: http://tf3dm.com/3d-model/crate-86737.html diff --git a/examples/test-vertical-align/models/crate/crate.jpg b/examples/test-vertical-align/models/crate/crate.jpg new file mode 100644 index 0000000000000000000000000000000000000000..43983f4656b030d8e7247b33029b6f1bed1f1a56 GIT binary patch literal 15217 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 literal 0 HcmV?d00001 diff --git a/examples/test-vertical-align/models/crate/crate.mtl b/examples/test-vertical-align/models/crate/crate.mtl new file mode 100644 index 0000000..df96ca5 --- /dev/null +++ b/examples/test-vertical-align/models/crate/crate.mtl @@ -0,0 +1,12 @@ +# Blender MTL File: 'crate.blend' +# Material Count: 1 + +newmtl Material.001 +Ns 96.078431 +Ka 0.000000 0.000000 0.000000 +Kd 0.640000 0.640000 0.640000 +Ks 0.500000 0.500000 0.500000 +Ni 1.000000 +d 1.000000 +illum 2 +map_Kd crate.jpg diff --git a/examples/test-vertical-align/models/crate/crate.obj b/examples/test-vertical-align/models/crate/crate.obj new file mode 100644 index 0000000..fcc2344 --- /dev/null +++ b/examples/test-vertical-align/models/crate/crate.obj @@ -0,0 +1,24 @@ +# Blender v2.67 (sub 1) OBJ File: 'crate.blend' +# www.blender.org +mtllib crate.mtl +o Cube_Cube.001 +v -1.000000 -1.000000 1.000000 +v -1.000000 -1.000000 -1.000000 +v 1.000000 -1.000000 -1.000000 +v 1.000000 -1.000000 1.000000 +v -1.000000 1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v 1.000000 1.000000 -1.000000 +v 1.000000 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +usemtl Material.001 +s off +f 5/1 6/2 2/3 1/4 +f 6/1 7/2 3/3 2/4 +f 7/1 8/2 4/3 3/4 +f 8/1 5/2 1/3 4/4 +f 1/1 2/2 3/3 4/4 +f 8/1 7/2 6/3 5/4 diff --git a/examples/test-vertical-align/models/tree1/tex/shadow-circle.png b/examples/test-vertical-align/models/tree1/tex/shadow-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..823c74488e3f52fd05ed1256347af763c7b5205e GIT binary patch literal 2214 zcmeHI`#Teg8=q^89kYysB{tV`Lg6e$W}CT0jPccxTjX*mxiyk(g^gS$MecRna-WmS zFv8sLCPKM$MwCnJxWrfg#`pQY&-1>Y%a8B#dES?5Wr+g;Wq<$x0Ay-{!JlB)&lci4 znd#9^r6<7eiLyWe0Q5wWLsx+l%@c^n83D=%U@Is5v(DX$TxI=miSf_6Q0%4D;XUkw<$EW`c;I)%D(R_ z_D;J0;+f^a=NC3 z$8ZF=A0-_1+t!5t4nB?Y0PT!5Ivctx$I}B-CuJ+OA7m8x+ceEbzWwyHGhshs2|Hv< z2LHHaFgoZ}0RRXvO))52;^cbPDSH_QiO351KEpSZNH}&41Z|+R(%q;`B_FrajJ1MP zi*Nc<51X5VCls^Ogplu39^BhK;LH4`dFfjd_b$&6fAipuPYq`!DkD2?4&WvqJ{-8+ z%6>CpeB z8JoPYa09fc$iW^CktT^q9GC))6RY%M&uP~0vxaa!YgMv@)<>azMYvMC-P~g0;!Qs7 zmrwYL^!Qpln5j%T5g&5CiVZHlF&CuMX7{r2c}GjkUXj|K7i+tI zySHqE$&%!#usI`I!DC8(waX>LSjO{6^L2Te-hkH}-I`p#P*>R0=_e}_xn9#FbKsPV zYP1Trc$;R_mR4*v*!IU0LHq)tccEMu)E;CHjsM}{h4eTe5c{3q0Q&NO^gMQ;7+Iw) zFKgWc3b)>XAD(EMt2wtjk^3Yv$Hw}1J$}^-f_E5Fe?8Jl4^J#C{Tb21x&;nvCBpmV8DUP z9&)eEhOxW~Sgv=w>eY6$yDO_nfEiWfjE*%}Yd!RWItVT-$ki)(oPZ%Vb?PTX#Zr_u zEvzJy70%N-c@$YBeyuTWB^sM>A6qW3*0Ye^;owcR?dVlkMZ2Z6@2XZ?pI(X0nxA;G z$e}I`yS-L%^QJ0{kofl^YH^+hSlZ#hE%?P`%rvy=p;v6UigiL21ncNvi!}g}Z~VX# z+?OPnr(-?_h5Jjp6`XgQ4)q9t2nPnlnCN=Y*3P^*-E1Z4{n+{MO|j%VS)I?TwMO)b~J&qPjTi8=Q*H7}>B>ys>P;X5{= zxtog?JWN&MEXiLy3sswy$Ah7lTTqJ_TUHB-B@U$rfa$#d(gY$lHo=>uxEM-Y=eQJ| z=MIt5XCy90gCkk!Meyi0_-)K!C`FX?Du(h3_mupv^hYA)KctvblXaBYV|c6nO<$)F z-JF>UhC0R9NJ1Bd$k5F0?}+WUOYNU)Qx+4K%Hh+~#TEGeLf>;dU&-LO2JY0fqgcHw zVd)mFfEbB{2q#k=%YC?|6V=lf&$H63c(FFfL07mh9N#nU9rr2JIb_&!;x=wVAj9a_ z$$V3D$Jq9@Mf1X$kxf_B5|EJi0z3$@ucro`l{#b2*4DoY8E*|YD1*qGSSxlhvV__N zHLi8sWw5dR2+Q6xVHQdAI>-Gbc}wE8zd=*j5bBhwXtAZumdQ|kyd7)jpm1m!958_2 zL^jasf|vQBG%7Q_YIkIV^Eogwoo&(5w(dSsS7+J%R3BKD2enuh5x{V*#y-i;-W$e_ zrD?y{z#AmzV%!rIjUk3nU1)f+jN9)TYd-TwJ8W29tLHmVjw{-?;~I}TP^v_t5J|3h zOHfZ7OF6Z1U;3t$&Ynf?F(O`z46u(9wo^X79yq#ePY$opW6MRH!+c$?C7gTq7t|$w zkl+gQOZj3fCe&0uRg zs6dudop~R1^?s;aWW9U{{f^jfGQP)LicsV92KXC3iYK{U^T^M8b;-`rbdTnlcCYkaU9V`h2 gBd%}%xgB@R%S`eLIJj(P^7EaVVl6S{MlR(40+$*%Q2+n{ literal 0 HcmV?d00001 diff --git a/examples/test-vertical-align/models/tree1/tree1.dae b/examples/test-vertical-align/models/tree1/tree1.dae new file mode 100644 index 0000000..afd7afa --- /dev/null +++ b/examples/test-vertical-align/models/tree1/tree1.dae @@ -0,0 +1,347 @@ + + + + + CINEMA4D 15.064 COLLADA Exporter + + 2015-08-28T05:40:04Z + 2015-08-28T05:40:04Z + + Y_UP + + + + tex/shadow-circle.png + + + + + + + + + 0.8 0.8 0.8 1 + + + 0.2 0.2 0.2 1 + + + 0.5 + + + + + + + + + + + 0.0627451 0.396078 0.513725 1 + + + 0.2 0.2 0.2 1 + + + 0.5 + + + + + + + + + + + 0.0235294 0.564706 0.607843 1 + + + 0.2 0.2 0.2 1 + + + 0.5 + + + + + + + + + + + 0.164706 0.72549 0.701961 1 + + + 0.2 0.2 0.2 1 + + + 0.5 + + + + + + + + + + + 0.654902 0.47451 0.415686 1 + + + 0.2 0.2 0.2 1 + + + 0.5 + + + + + + + + + + ID13 + + + + + ID14 + + + + + + + + + 1 1 1 1 + + + 0.88 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -40 -80.5 40 40 -80.5 40 40 -80.5 -40 -40 -80.5 -40 -40 -77.5711 47.0711 40 -77.5711 47.0711 45 -77.5711 45 47.0711 -77.5711 40 47.0711 -77.5711 -40 45 -77.5711 -45 40 -77.5711 -47.0711 -40 -77.5711 -47.0711 -45 -77.5711 -45 -47.0711 -77.5711 -40 -47.0711 -77.5711 40 -45 -77.5711 45 -40 -70.5 50 40 -70.5 50 47.0711 -70.5 47.0711 50 -70.5 40 50 -70.5 -40 47.0711 -70.5 -47.0711 40 -70.5 -50 -40 -70.5 -50 -47.0711 -70.5 -47.0711 -50 -70.5 -40 -50 -70.5 40 -47.0711 -70.5 47.0711 -40 70.5 50 40 70.5 50 47.0711 70.5 47.0711 50 70.5 40 50 70.5 -40 47.0711 70.5 -47.0711 40 70.5 -50 -40 70.5 -50 -47.0711 70.5 -47.0711 -50 70.5 -40 -50 70.5 40 -47.0711 70.5 47.0711 -40 77.5711 47.0711 40 77.5711 47.0711 45 77.5711 45 47.0711 77.5711 40 47.0711 77.5711 -40 45 77.5711 -45 40 77.5711 -47.0711 -40 77.5711 -47.0711 -45 77.5711 -45 -47.0711 77.5711 -40 -47.0711 77.5711 40 -45 77.5711 45 -40 80.5 40 40 80.5 40 40 80.5 -40 -40 80.5 -40 + + + + + + + + + + -0.0785214 -0.921027 0.381502 0.0785214 -0.921027 0.381502 0 -0.382683 0.92388 0 0 1 0 0.382683 0.92388 -0.0785214 0.921027 0.381502 0.0785214 0.921027 0.381502 0.156558 -0.912487 0.377964 0.357407 -0.357407 0.862856 0.382683 0 0.92388 0.357407 0.357407 0.862856 0.156558 0.912487 0.377964 0.381502 -0.921027 0.0785214 0.377964 -0.912487 0.156558 0.862856 -0.357407 0.357407 0.92388 0 0.382683 0.862856 0.357407 0.357407 0.377964 0.912487 0.156558 0.381502 0.921027 0.0785214 0.381502 -0.921027 -0.0785214 0.92388 -0.382683 -0 1 0 -0 0.92388 0.382683 -0 0.381502 0.921027 -0.0785214 0.377964 -0.912487 -0.156558 0.862856 -0.357407 -0.357407 0.92388 0 -0.382683 0.862856 0.357407 -0.357407 0.377964 0.912487 -0.156558 0.0785214 -0.921027 -0.381502 0.156558 -0.912487 -0.377964 0.357407 -0.357407 -0.862856 0.382683 0 -0.92388 0.357407 0.357407 -0.862856 0.156558 0.912487 -0.377964 0.0785214 0.921027 -0.381502 -0.0785214 -0.921027 -0.381502 0 -0.382683 -0.92388 0 0 -1 0 0.382683 -0.92388 -0.0785214 0.921027 -0.381502 -0.156558 -0.912487 -0.377964 -0.357407 -0.357407 -0.862856 -0.382683 0 -0.92388 -0.357407 0.357407 -0.862856 -0.156558 0.912487 -0.377964 -0.381502 -0.921027 -0.0785214 -0.377964 -0.912487 -0.156558 -0.862856 -0.357407 -0.357407 -0.92388 0 -0.382683 -0.862856 0.357407 -0.357407 -0.377964 0.912487 -0.156558 -0.381502 0.921027 -0.0785214 -0.381502 -0.921027 0.0785214 -0.92388 -0.382683 -0 -1 0 -0 -0.92388 0.382683 -0 -0.381502 0.921027 0.0785214 -0.377964 -0.912487 0.156558 -0.862856 -0.357407 0.357407 -0.92388 0 0.382683 -0.862856 0.357407 0.357407 -0.377964 0.912487 0.156558 -0.156558 -0.912487 0.377964 -0.357407 -0.357407 0.862856 -0.382683 0 0.92388 -0.357407 0.357407 0.862856 -0.156558 0.912487 0.377964 0 1 -0 0 -1 -0 + + + + + + + + + + 0 0 0 0.0455526 0.835876 0.0455526 0.835876 0 0 0.0911051 0.835876 0.0911051 0 0.908895 0.835876 0.908895 0 0.954447 0.835876 0.954447 0 1 0.835876 1 0.876907 0 0.917938 0.0455526 0.917938 0.0911051 0.917938 0.908895 0.917938 0.954447 0.876907 1 0.958969 0 1 0.0455526 1 0.0911051 1 0.908895 1 0.954447 0.958969 1 1 1 1 0 + + + + + + + + + + + + + + + 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 +

1 1 3 5 1 2 4 0 1 0 0 0 5 2 2 17 2 5 16 2 4 4 2 1 17 3 5 29 3 7 28 3 6 16 3 4 29 4 7 41 4 9 40 4 8 28 4 6 41 6 9 53 6 11 52 5 10 40 5 8 6 7 13 5 1 2 1 1 12 6 8 13 18 8 14 17 8 5 5 8 2 18 9 14 30 9 15 29 9 7 17 9 5 30 10 15 42 10 16 41 10 9 29 10 7 42 11 16 53 6 17 41 6 9 7 12 19 6 13 13 1 12 18 7 14 19 19 14 20 18 14 14 6 14 13 19 15 20 31 15 21 30 15 15 18 15 14 31 16 21 43 16 22 42 16 16 30 16 15 43 18 22 53 18 23 42 17 16 2 19 3 8 19 2 7 12 1 1 12 0 8 20 2 20 20 5 19 20 4 7 20 1 20 21 5 32 21 7 31 21 6 19 21 4 32 22 7 44 22 9 43 22 8 31 22 6 44 23 9 54 23 11 53 18 10 43 18 8 9 24 13 8 19 2 2 19 12 9 25 13 21 25 14 20 25 5 8 25 2 21 26 14 33 26 15 32 26 7 20 26 5 33 27 15 45 27 16 44 27 9 32 27 7 45 28 16 54 23 17 44 23 9 10 29 19 9 30 13 2 29 18 10 31 19 22 31 20 21 31 14 9 31 13 22 32 20 34 32 21 33 32 15 21 32 14 34 33 21 46 33 22 45 33 16 33 33 15 46 35 22 54 35 23 45 34 16 3 36 3 11 36 2 10 29 1 2 29 0 11 37 2 23 37 5 22 37 4 10 37 1 23 38 5 35 38 7 34 38 6 22 38 4 35 39 7 47 39 9 46 39 8 34 39 6 47 40 9 55 40 11 54 35 10 46 35 8 12 41 13 11 36 2 3 36 12 12 42 13 24 42 14 23 42 5 11 42 2 24 43 14 36 43 15 35 43 7 23 43 5 36 44 15 48 44 16 47 44 9 35 44 7 48 45 16 55 40 17 47 40 9 13 46 19 12 47 13 3 46 18 13 48 19 25 48 20 24 48 14 12 48 13 25 49 20 37 49 21 36 49 15 24 49 14 37 50 21 49 50 22 48 50 16 36 50 15 49 52 22 55 52 23 48 51 16 0 53 3 14 53 2 13 46 1 3 46 0 14 54 2 26 54 5 25 54 4 13 54 1 26 55 5 38 55 7 37 55 6 25 55 4 38 56 7 50 56 9 49 56 8 37 56 6 50 57 9 52 57 11 55 52 10 49 52 8 15 58 13 14 53 2 0 53 12 15 59 13 27 59 14 26 59 5 14 59 2 27 60 14 39 60 15 38 60 7 26 60 5 39 61 15 51 61 16 50 61 9 38 61 7 51 62 16 52 57 17 50 57 9 4 0 19 15 63 13 0 0 18 4 64 19 16 64 20 27 64 14 15 64 13 16 65 20 28 65 21 39 65 15 27 65 14 28 66 21 40 66 22 51 66 16 39 66 15 40 5 22 52 5 23 51 67 16 53 68 25 54 68 24 55 68 10 52 68 0 3 69 0 2 69 25 1 69 24 0 69 10

+
+
+
+ + + + 0 -50 0 0 50 0 10 -50 -0 10 -50 -0 10 50 -0 10 50 -0 8.66025 -50 -5 8.66025 -50 -5 8.66025 50 -5 8.66025 50 -5 5 -50 -8.66025 5 -50 -8.66025 5 50 -8.66025 5 50 -8.66025 6.12323e-16 -50 -10 6.12323e-16 -50 -10 6.12323e-16 50 -10 6.12323e-16 50 -10 -5 -50 -8.66025 -5 -50 -8.66025 -5 50 -8.66025 -5 50 -8.66025 -8.66025 -50 -5 -8.66025 -50 -5 -8.66025 50 -5 -8.66025 50 -5 -10 -50 -1.22465e-15 -10 -50 -1.22465e-15 -10 50 -1.22465e-15 -10 50 -1.22465e-15 -8.66025 -50 5 -8.66025 -50 5 -8.66025 50 5 -8.66025 50 5 -5 -50 8.66025 -5 -50 8.66025 -5 50 8.66025 -5 50 8.66025 -1.83697e-15 -50 10 -1.83697e-15 -50 10 -1.83697e-15 50 10 -1.83697e-15 50 10 5 -50 8.66025 5 -50 8.66025 5 50 8.66025 5 50 8.66025 8.66025 -50 5 8.66025 -50 5 8.66025 50 5 8.66025 50 5 + + + + + + + + + + 0 -1 -0 1 0 -0 0.866026 0 -0.5 0 1 -0 0.5 0 -0.866026 0 0 -1 -0.5 0 -0.866026 -0.866026 0 -0.5 -1 0 -0 -0.866026 0 0.5 -0.5 0 0.866026 0 0 1 0.5 0 0.866026 0.866026 0 0.5 + + + + + + + + + + 0.5 0.5 0 0.5 0.0669873 0.75 0 0 0 1 0.0833333 1 0.0833333 0 1 0.5 0.933013 0.75 0.25 0.933013 0.166667 1 0.166667 0 0.75 0.933013 0.5 1 0.25 1 0.25 0 0.333333 1 0.333333 0 0.416667 1 0.416667 0 0.5 0 0.933013 0.25 0.583333 1 0.583333 0 0.0669873 0.25 0.75 0.0669873 0.666667 1 0.666667 0 0.25 0.0669873 0.75 1 0.75 0 0.833333 1 0.833333 0 0.916667 1 0.916667 0 1 1 1 0 + + + + + + + + + + + + + + + 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 +

6 0 2 2 0 1 0 0 0 7 2 6 8 2 5 4 1 4 3 1 3 9 3 8 1 3 0 5 3 7 10 0 9 6 0 2 0 0 0 11 4 11 12 4 10 8 2 5 7 2 6 13 3 12 1 3 0 9 3 8 14 0 13 10 0 9 0 0 0 15 5 15 16 5 14 12 4 10 11 4 11 17 3 13 1 3 0 13 3 12 18 0 12 14 0 13 0 0 0 19 6 17 20 6 16 16 5 14 15 5 15 21 3 9 1 3 0 17 3 13 22 0 8 18 0 12 0 0 0 23 7 19 24 7 18 20 6 16 19 6 17 25 3 2 1 3 0 21 3 9 26 0 7 22 0 8 0 0 0 27 8 20 28 8 13 24 7 18 23 7 19 29 3 1 1 3 0 25 3 2 30 0 21 26 0 7 0 0 0 31 9 23 32 9 22 28 8 13 27 8 20 33 3 24 1 3 0 29 3 1 34 0 25 30 0 21 0 0 0 35 10 27 36 10 26 32 9 22 31 9 23 37 3 28 1 3 0 33 3 24 38 0 20 34 0 25 0 0 0 39 11 30 40 11 29 36 10 26 35 10 27 41 3 20 1 3 0 37 3 28 42 0 28 38 0 20 0 0 0 43 12 32 44 12 31 40 11 29 39 11 30 45 3 25 1 3 0 41 3 20 46 0 24 42 0 28 0 0 0 47 13 34 48 13 33 44 12 31 43 12 32 49 3 21 1 3 0 45 3 25 2 0 1 46 0 24 0 0 0 3 1 36 4 1 35 48 13 33 47 13 34 5 3 7 1 3 0 49 3 21

+
+
+
+ + + + -50 0 50 50 0 50 -50 0 -50 50 0 -50 + + + + + + + + + + 0 1 -0 + + + + + + + + + + 0 0 0 1 1 1 1 0 + + + + + + + + + + + + + + + 4 +

1 0 3 3 0 2 2 0 1 0 0 0

+
+
+
+
+ + + + 0 0 -0 + 0 1 0 -0 + 1 0 0 0 + 0 0 1 -0 + 1 1 1 + + 0 180 -0 + 0 1 0 -0 + 1 0 0 0 + 0 0 1 -0 + 1 1 1 + + + + + + + + + + + + 0 50 -0 + 0 1 0 -0 + 1 0 0 0 + 0 0 1 -0 + 1 1 1 + + + + + + + + + + + + 0 0 -0 + 0 1 0 -0 + 1 0 0 0 + 0 0 1 -0 + 1 1 1 + + + + + + + + + + + + + + + + +
diff --git a/examples/test-vertical-align/models/tree2/tex/shadow-circle.png b/examples/test-vertical-align/models/tree2/tex/shadow-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..da73bd9bdb648cb9de2362275d89f9f5d1087730 GIT binary patch literal 3632 zcmeHJ=RXvV1HL1OjNO{?ffF zYxBPZ_Cy<^0f726`cr4fziFVUjs~D+gnJDD0HvB3m}~tt|BwGK@ISJ^m!>xxf2&Lf znHre^R<;&Sjty=j_v!rb}|=D#P@ekCj+5)C;gFLBe?`ELjO5E;#?Am+b|Q<97i)w(}d zH2lKYOlVL-?{n^DdB04$rigpk-6(BFOMT@SpL%uiG1zpv18%~!;h85h>6-0T_ng}@ z;p2PzJs&WdcdNgsxb}&)=_Dz>G7m0JVT~nwS>a!|FsTaWB}>WKp?!mHz<;h!)!d0J z&3OI|wfqG6zFl-t*yQua>rDUv)K(9JHV>ZJETGXed&iCw*XWsA=w0|JG><-L6dONh?lq#$?T}3f|Qanp$~J7%UVg-Y(K>p55$>6X}1* zzjW!oE>ccw4^s)U=6T%Q+gdWXxAvrTiY}X7QgNb6Mttg6A^`(@?_H3XJ|!doQ*IHX z!U+5sxbSn+agdBh4oC?s2YCH{n4;n~SvY?>cf!lCb2w$V9iqwGdEp?Z&l7`k)&7p5 z!GB|zkj3UWGq{EBJv|=i;3d_?6I7?VS{-`t0C)VamV@4#fke?>I(907FRg^!k{&$X zz#iW8_lQnP{PZdf&XZhR2QP9-WlNRw?(JM!u}|g>yVSP4^-;*+c)RfM8hu!9m9(*p zhc4}Ls3?Zw4U8s`AD~lc=anp^`qa>tYVLa>hhhU+YS2h+w7X%Fai0~FZC;)6-3G?W zaQH=b!Ato~TcEsZdth>Hw#rzC()Xz!v4IZ_Puy}@!@pDGIe`xrHQr42S=~9o=g88Y zG(mr!42fJs`YZs;~IlAzV(Z$6Rq-L_WIHW%? zL+=>p7}!LX81g8G;}Ch(I9u^Nj;_Qv_vMbSdSYUUYe$S2;7O(g(DaGsJ0LzQnJy-5 zG<^y81((=IAwJX#QWqvfbRf$y@K^+t*`ZERPR2eq@t-?0Bgdomthu1q_75jAD;@>N z6#G4#X%y$;xg=tNI$WKHr#gnD4fboyn@Ncl9o8b~DdQ5X7a}w=pAgcwQ7B*5X;4W3 z`xK4DQ0$n@ucv%|1t~$mh6le(btmIo7U=AiM~_Amn0Fzun9kD=YcC{#M>wFn$s2#}WRhII8^7D+N3Syp8$+6Xe9Q zB7o-Ozb68HU7R{^D4#35BZCpOxk644IOKuOm7a7;2)r<=?yjZyhA{_s?r3I8!W=Y4 zgm0tzRmXBkt7$MO*xwiezEA0c5l6#jnnL^~sdYCmDoKqk{(MjhtNNNv_3DxaE7AVw zpQER;SSS`Jzpkg)%cd`@n_YA0${;$35{pn_eC!!5PTW&c<>}(Cz%8fU(@~5^vzd&` z3GxZBRNzPnoWNljYmbriD(M(x(fuw%R3Mifu=3m$wjIi22Mnpb=oUNu>(rig8`=?L zkT@$R7+E|PiJJ0)k>h}4aVG854FJQNrp=n{ET@EzAu7 zXR)LuO?EzSjiVw+P8-QUlbtxK!y#`j?g!*Jf#4z`#7OX4rWlHdh6VXmF9ohidDcgP z2~f;jC>bS`u?32vHqrOV8T@!f^l;OE8^S`-cO$~}j)s?r@LSQ+SrA8wGil=T?%j{) zRIqbFxpPf3T-ryx_aEN;{51sK*{Z~0-xwurRM3@un;M#wMYO%+2B-2Z0d+q~?MY`L zS>7%kee)SKZQ!kY@?pZYK6e}JHqsvDp8>di+IU6$*w!oBw*p#Q?Ndw}?7IAIRKe0A z2w-_{6TZbwzXfa($n+W6Z<#!BtlOStyJAnQokFcL=44QfU%gOJ4s>`E#GZs}6u+>r z4ZP+P#ZSDp)#Jmohfhun!#TEv_|a|XTN&3tA~tMS_&mdGfQ%?|~8f*KcEj z1N`0&Phu~{Qxq`#_J???R;^?=lFfeM@H}jaRIy-+idn z5>EvpciYB>Q^&Ua;g6r1LucbsH%aL1{dCsI!grqzvG$zkrkL*&4;blDJD2)14NN)~ z(qTdGXmeS{8l*fIbbgM-a#t)DSSkwv^eP@8`fGb6(MBbwSzut{7yegz0!}UDr?GZ? zG5cpi@|-pOY0*uxRXhyk9Nu-vov-ZVp@Rk+;@qMfx;3^bwrl5^b^5w)K)2_;)A=9Z z4m1Gz-g&JoMAwKpfWF?pO2u+0Fc8FJ^1iC4NEVH$ zG5#?)ZPpqnmmTCqeo89{2tSiE27dHZ(N+h`|7v7i!XjR|GZ-owB5-fyMuLukwrTC@&!{0`YPQIeTQ<^Y1|63Vq6UnCCv~E< z`ckvrZjbjO>pb?$KJdTzsz&p8&Sa%*;vREl!o(J-a@o&*q(HANf2Q;5jCKD_ObKAQ zd1UygW}q;#EimsI3Zb!quysD|9DLJBD&N}F@5|2fQd1OfxZFW!qIH1DdH?x3!}f+j z30(-)mCx@DF6X_p04A`0QFOdvO`a*c%jDh0?*97ou%g2)g}kF?F{%N@JTqzU%=JnJ z?Bs2Y|GqFm0X?fhW8 + + + + CINEMA4D 15.064 COLLADA Exporter + + 2015-08-28T05:43:48Z + 2015-08-28T05:43:48Z + + Y_UP + + + + tex/shadow-circle.png + + + + + + + + + 0.8 0.8 0.8 1 + + + 0.2 0.2 0.2 1 + + + 0.5 + + + + + + + + + + + 0.0627451 0.396078 0.513725 1 + + + 0.2 0.2 0.2 1 + + + 0.5 + + + + + + + + + + + 0.0235294 0.564706 0.607843 1 + + + 0.2 0.2 0.2 1 + + + 0.5 + + + + + + + + + + + 0.164706 0.72549 0.701961 1 + + + 0.2 0.2 0.2 1 + + + 0.5 + + + + + + + + + + + 0.654902 0.47451 0.415686 1 + + + 0.2 0.2 0.2 1 + + + 0.5 + + + + + + + + + + ID13 + + + + + ID14 + + + + + + + + + 1 1 1 1 + + + 0.88 + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -32.0367 -60 32.0367 32.0367 -60 32.0367 32.0367 -60 -32.0367 -32.0367 -60 -32.0367 -32.0367 -57.6676 37.6676 32.0367 -57.6676 37.6676 36.0183 -57.6676 36.0183 37.6676 -57.6676 32.0367 37.6676 -57.6676 -32.0367 36.0183 -57.6676 -36.0183 32.0367 -57.6676 -37.6676 -32.0367 -57.6676 -37.6676 -36.0183 -57.6676 -36.0183 -37.6676 -57.6676 -32.0367 -37.6676 -57.6676 32.0367 -36.0183 -57.6676 36.0183 -32.0367 -52.0367 40 32.0367 -52.0367 40 37.6676 -52.0367 37.6676 40 -52.0367 32.0367 40 -52.0367 -32.0367 37.6676 -52.0367 -37.6676 32.0367 -52.0367 -40 -32.0367 -52.0367 -40 -37.6676 -52.0367 -37.6676 -40 -52.0367 -32.0367 -40 -52.0367 32.0367 -37.6676 -52.0367 37.6676 -32.0367 52.0367 40 32.0367 52.0367 40 37.6676 52.0367 37.6676 40 52.0367 32.0367 40 52.0367 -32.0367 37.6676 52.0367 -37.6676 32.0367 52.0367 -40 -32.0367 52.0367 -40 -37.6676 52.0367 -37.6676 -40 52.0367 -32.0367 -40 52.0367 32.0367 -37.6676 52.0367 37.6676 -32.0367 57.6676 37.6676 32.0367 57.6676 37.6676 36.0183 57.6676 36.0183 37.6676 57.6676 32.0367 37.6676 57.6676 -32.0367 36.0183 57.6676 -36.0183 32.0367 57.6676 -37.6676 -32.0367 57.6676 -37.6676 -36.0183 57.6676 -36.0183 -37.6676 57.6676 -32.0367 -37.6676 57.6676 32.0367 -36.0183 57.6676 36.0183 -32.0367 60 32.0367 32.0367 60 32.0367 32.0367 60 -32.0367 -32.0367 60 -32.0367 + + + + + + + + + + -0.0785213 -0.921027 0.381502 0.0785213 -0.921027 0.381502 0 -0.382683 0.92388 0 0 1 0 0.382683 0.92388 -0.0785213 0.921027 0.381502 0.0785213 0.921027 0.381502 0.156558 -0.912487 0.377964 0.357407 -0.357407 0.862856 0.382683 0 0.92388 0.357406 0.357407 0.862856 0.156558 0.912487 0.377964 0.381502 -0.921027 0.0785213 0.377964 -0.912487 0.156558 0.862856 -0.357407 0.357407 0.92388 0 0.382683 0.862856 0.357407 0.357407 0.377964 0.912487 0.156558 0.381502 0.921027 0.0785213 0.381502 -0.921027 -0.0785213 0.92388 -0.382683 -0 1 0 -0 0.92388 0.382683 -0 0.381502 0.921027 -0.0785213 0.377964 -0.912487 -0.156558 0.862856 -0.357407 -0.357407 0.92388 0 -0.382683 0.862856 0.357407 -0.357407 0.377964 0.912487 -0.156558 0.0785213 -0.921027 -0.381502 0.156558 -0.912487 -0.377964 0.357406 -0.357407 -0.862856 0.382683 0 -0.92388 0.357407 0.357407 -0.862856 0.156558 0.912487 -0.377964 0.0785213 0.921027 -0.381502 -0.0785213 -0.921027 -0.381502 0 -0.382683 -0.92388 0 0 -1 0 0.382683 -0.92388 -0.0785213 0.921027 -0.381502 -0.156558 -0.912487 -0.377964 -0.357407 -0.357407 -0.862856 -0.382683 0 -0.92388 -0.357406 0.357407 -0.862856 -0.156558 0.912487 -0.377964 -0.381502 -0.921027 -0.0785213 -0.377964 -0.912487 -0.156558 -0.862856 -0.357407 -0.357407 -0.92388 0 -0.382683 -0.862856 0.357407 -0.357407 -0.377964 0.912487 -0.156558 -0.381502 0.921027 -0.0785213 -0.381502 -0.921027 0.0785213 -0.92388 -0.382683 -0 -1 0 -0 -0.92388 0.382683 -0 -0.381502 0.921027 0.0785213 -0.377964 -0.912487 0.156558 -0.862856 -0.357407 0.357407 -0.92388 0 0.382683 -0.862856 0.357407 0.357407 -0.377964 0.912487 0.156558 -0.156558 -0.912487 0.377964 -0.357406 -0.357407 0.862856 -0.382683 0 0.92388 -0.357407 0.357407 0.862856 -0.156558 0.912487 0.377964 0 1 -0 0 -1 -0 + + + + + + + + + + 0 0 0 0.0484494 0.836663 0.0484494 0.836663 0 0 0.0968987 0.836663 0.0968987 0 0.903101 0.836663 0.903101 0 0.951551 0.836663 0.951551 0 1 0.836663 1 0.877497 0 0.918331 0.0484494 0.918331 0.0968987 0.918331 0.903101 0.918331 0.951551 0.877497 1 0.959166 0 1 0.0484494 1 0.0968987 1 0.903101 1 0.951551 0.959166 1 1 1 1 0 + + + + + + + + + + + + + + + 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 +

1 1 3 5 1 2 4 0 1 0 0 0 5 2 2 17 2 5 16 2 4 4 2 1 17 3 5 29 3 7 28 3 6 16 3 4 29 4 7 41 4 9 40 4 8 28 4 6 41 6 9 53 6 11 52 5 10 40 5 8 6 7 13 5 1 2 1 1 12 6 8 13 18 8 14 17 8 5 5 8 2 18 9 14 30 9 15 29 9 7 17 9 5 30 10 15 42 10 16 41 10 9 29 10 7 42 11 16 53 6 17 41 6 9 7 12 19 6 13 13 1 12 18 7 14 19 19 14 20 18 14 14 6 14 13 19 15 20 31 15 21 30 15 15 18 15 14 31 16 21 43 16 22 42 16 16 30 16 15 43 18 22 53 18 23 42 17 16 2 19 3 8 19 2 7 12 1 1 12 0 8 20 2 20 20 5 19 20 4 7 20 1 20 21 5 32 21 7 31 21 6 19 21 4 32 22 7 44 22 9 43 22 8 31 22 6 44 23 9 54 23 11 53 18 10 43 18 8 9 24 13 8 19 2 2 19 12 9 25 13 21 25 14 20 25 5 8 25 2 21 26 14 33 26 15 32 26 7 20 26 5 33 27 15 45 27 16 44 27 9 32 27 7 45 28 16 54 23 17 44 23 9 10 29 19 9 30 13 2 29 18 10 31 19 22 31 20 21 31 14 9 31 13 22 32 20 34 32 21 33 32 15 21 32 14 34 33 21 46 33 22 45 33 16 33 33 15 46 35 22 54 35 23 45 34 16 3 36 3 11 36 2 10 29 1 2 29 0 11 37 2 23 37 5 22 37 4 10 37 1 23 38 5 35 38 7 34 38 6 22 38 4 35 39 7 47 39 9 46 39 8 34 39 6 47 40 9 55 40 11 54 35 10 46 35 8 12 41 13 11 36 2 3 36 12 12 42 13 24 42 14 23 42 5 11 42 2 24 43 14 36 43 15 35 43 7 23 43 5 36 44 15 48 44 16 47 44 9 35 44 7 48 45 16 55 40 17 47 40 9 13 46 19 12 47 13 3 46 18 13 48 19 25 48 20 24 48 14 12 48 13 25 49 20 37 49 21 36 49 15 24 49 14 37 50 21 49 50 22 48 50 16 36 50 15 49 52 22 55 52 23 48 51 16 0 53 3 14 53 2 13 46 1 3 46 0 14 54 2 26 54 5 25 54 4 13 54 1 26 55 5 38 55 7 37 55 6 25 55 4 38 56 7 50 56 9 49 56 8 37 56 6 50 57 9 52 57 11 55 52 10 49 52 8 15 58 13 14 53 2 0 53 12 15 59 13 27 59 14 26 59 5 14 59 2 27 60 14 39 60 15 38 60 7 26 60 5 39 61 15 51 61 16 50 61 9 38 61 7 51 62 16 52 57 17 50 57 9 4 0 19 15 63 13 0 0 18 4 64 19 16 64 20 27 64 14 15 64 13 16 65 20 28 65 21 39 65 15 27 65 14 28 66 21 40 66 22 51 66 16 39 66 15 40 5 22 52 5 23 51 67 16 53 68 25 54 68 24 55 68 10 52 68 0 3 69 0 2 69 25 1 69 24 0 69 10

+
+
+
+ + + + -18.4211 -34.5 62.1092 18.4211 -34.5 62.1092 18.4211 -34.5 -62.1092 -18.4211 -34.5 -62.1092 -18.4211 -33.1589 65.3469 18.4211 -33.1589 65.3469 20.7105 -33.1589 64.3986 21.6589 -33.1589 62.1092 21.6589 -33.1589 -62.1092 20.7105 -33.1589 -64.3986 18.4211 -33.1589 -65.3469 -18.4211 -33.1589 -65.3469 -20.7105 -33.1589 -64.3986 -21.6589 -33.1589 -62.1092 -21.6589 -33.1589 62.1092 -20.7105 -33.1589 64.3986 -18.4211 -29.9211 66.6881 18.4211 -29.9211 66.6881 21.6589 -29.9211 65.3469 23 -29.9211 62.1092 23 -29.9211 -62.1092 21.6589 -29.9211 -65.3469 18.4211 -29.9211 -66.6881 -18.4211 -29.9211 -66.6881 -21.6589 -29.9211 -65.3469 -23 -29.9211 -62.1092 -23 -29.9211 62.1092 -21.6589 -29.9211 65.3469 -18.4211 29.9211 66.6881 18.4211 29.9211 66.6881 21.6589 29.9211 65.3469 23 29.9211 62.1092 23 29.9211 -62.1092 21.6589 29.9211 -65.3469 18.4211 29.9211 -66.6881 -18.4211 29.9211 -66.6881 -21.6589 29.9211 -65.3469 -23 29.9211 -62.1092 -23 29.9211 62.1092 -21.6589 29.9211 65.3469 -18.4211 33.1589 65.3469 18.4211 33.1589 65.3469 20.7105 33.1589 64.3986 21.6589 33.1589 62.1092 21.6589 33.1589 -62.1092 20.7105 33.1589 -64.3986 18.4211 33.1589 -65.3469 -18.4211 33.1589 -65.3469 -20.7105 33.1589 -64.3986 -21.6589 33.1589 -62.1092 -21.6589 33.1589 62.1092 -20.7105 33.1589 64.3986 -18.4211 34.5 62.1092 18.4211 34.5 62.1092 18.4211 34.5 -62.1092 -18.4211 34.5 -62.1092 + + + + + + + + + + -0.0785212 -0.921027 0.381502 0.0785212 -0.921027 0.381502 0 -0.382683 0.92388 0 0 1 0 0.382683 0.92388 -0.0785212 0.921027 0.381502 0.0785212 0.921027 0.381502 0.156558 -0.912487 0.377965 0.357406 -0.357406 0.862857 0.382683 0 0.92388 0.357406 0.357406 0.862857 0.156558 0.912487 0.377965 0.381502 -0.921027 0.0785213 0.377965 -0.912487 0.156558 0.862856 -0.357407 0.357407 0.923879 0 0.382684 0.862856 0.357406 0.357407 0.377965 0.912487 0.156558 0.381502 0.921027 0.0785213 0.381502 -0.921027 -0.0785213 0.92388 -0.382683 -0 1 0 -0 0.92388 0.382683 -0 0.381502 0.921027 -0.0785213 0.377965 -0.912487 -0.156558 0.862856 -0.357406 -0.357407 0.923879 0 -0.382684 0.862856 0.357407 -0.357407 0.377965 0.912487 -0.156558 0.0785212 -0.921027 -0.381502 0.156558 -0.912487 -0.377965 0.357406 -0.357406 -0.862857 0.382683 0 -0.92388 0.357406 0.357406 -0.862857 0.156558 0.912487 -0.377965 0.0785212 0.921027 -0.381502 -0.0785212 -0.921027 -0.381502 0 -0.382683 -0.92388 0 0 -1 0 0.382683 -0.92388 -0.0785212 0.921027 -0.381502 -0.156558 -0.912487 -0.377965 -0.357406 -0.357406 -0.862857 -0.382683 0 -0.92388 -0.357406 0.357406 -0.862857 -0.156558 0.912487 -0.377965 -0.381502 -0.921027 -0.0785213 -0.377965 -0.912487 -0.156558 -0.862856 -0.357407 -0.357407 -0.923879 0 -0.382684 -0.862856 0.357406 -0.357407 -0.377965 0.912487 -0.156558 -0.381502 0.921027 -0.0785213 -0.381502 -0.921027 0.0785213 -0.92388 -0.382683 -0 -1 0 -0 -0.92388 0.382683 -0 -0.381502 0.921027 0.0785213 -0.377965 -0.912487 0.156558 -0.862856 -0.357406 0.357407 -0.923879 0 0.382684 -0.862856 0.357407 0.357407 -0.377965 0.912487 0.156558 -0.156558 -0.912487 0.377965 -0.357406 -0.357406 0.862857 -0.382683 0 0.92388 -0.357406 0.357406 0.862857 -0.156558 0.912487 0.377965 0 1 -0 0 -1 -0 + + + + + + + + + + 0 0 0 0.0484494 0.836663 0.0484494 0.836663 0 0 0.0968987 0.836663 0.0968987 0 0.903101 0.836663 0.903101 0 0.951551 0.836663 0.951551 0 1 0.836663 1 0.877497 0 0.918331 0.0484494 0.918331 0.0968987 0.918331 0.903101 0.918331 0.951551 0.877497 1 0.959166 0 1 0.0484494 1 0.0968987 1 0.903101 1 0.951551 0.959166 1 0.945267 0.0484494 0.945267 0 0.945267 0.0968987 0.945267 0.903101 0.945267 0.951551 0.945267 1 0.95895 0 0.972633 0.0484494 0.972633 0.0968987 0.972633 0.903101 0.972633 0.951551 0.95895 1 0.986317 0 0.986317 1 1 1 1 0 + + + + + + + + + + + + + + + 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 +

1 1 3 5 1 2 4 0 1 0 0 0 5 2 2 17 2 5 16 2 4 4 2 1 17 3 5 29 3 7 28 3 6 16 3 4 29 4 7 41 4 9 40 4 8 28 4 6 41 6 9 53 6 11 52 5 10 40 5 8 6 7 13 5 1 2 1 1 12 6 8 13 18 8 14 17 8 5 5 8 2 18 9 14 30 9 15 29 9 7 17 9 5 30 10 15 42 10 16 41 10 9 29 10 7 42 11 16 53 6 17 41 6 9 7 12 19 6 13 13 1 12 18 7 14 19 19 14 20 18 14 14 6 14 13 19 15 20 31 15 21 30 15 15 18 15 14 31 16 21 43 16 22 42 16 16 30 16 15 43 18 22 53 18 23 42 17 16 2 19 25 8 19 24 7 12 1 1 12 0 8 20 24 20 20 26 19 20 4 7 20 1 20 21 26 32 21 27 31 21 6 19 21 4 32 22 27 44 22 28 43 22 8 31 22 6 44 23 28 54 23 29 53 18 10 43 18 8 9 24 31 8 19 24 2 19 30 9 25 31 21 25 32 20 25 26 8 25 24 21 26 32 33 26 33 32 26 27 20 26 26 33 27 33 45 27 34 44 27 28 32 27 27 45 28 34 54 23 35 44 23 28 10 29 19 9 30 31 2 29 36 10 31 19 22 31 20 21 31 32 9 31 31 22 32 20 34 32 21 33 32 33 21 32 32 34 33 21 46 33 22 45 33 34 33 33 33 46 35 22 54 35 37 45 34 34 3 36 3 11 36 2 10 29 1 2 29 0 11 37 2 23 37 5 22 37 4 10 37 1 23 38 5 35 38 7 34 38 6 22 38 4 35 39 7 47 39 9 46 39 8 34 39 6 47 40 9 55 40 11 54 35 10 46 35 8 12 41 13 11 36 2 3 36 12 12 42 13 24 42 14 23 42 5 11 42 2 24 43 14 36 43 15 35 43 7 23 43 5 36 44 15 48 44 16 47 44 9 35 44 7 48 45 16 55 40 17 47 40 9 13 46 19 12 47 13 3 46 18 13 48 19 25 48 20 24 48 14 12 48 13 25 49 20 37 49 21 36 49 15 24 49 14 37 50 21 49 50 22 48 50 16 36 50 15 49 52 22 55 52 23 48 51 16 0 53 25 14 53 24 13 46 1 3 46 0 14 54 24 26 54 26 25 54 4 13 54 1 26 55 26 38 55 27 37 55 6 25 55 4 38 56 27 50 56 28 49 56 8 37 56 6 50 57 28 52 57 29 55 52 10 49 52 8 15 58 31 14 53 24 0 53 30 15 59 31 27 59 32 26 59 26 14 59 24 27 60 32 39 60 33 38 60 27 26 60 26 39 61 33 51 61 34 50 61 28 38 61 27 51 62 34 52 57 35 50 57 28 4 0 19 15 63 31 0 0 36 4 64 19 16 64 20 27 64 32 15 64 31 16 65 20 28 65 21 39 65 33 27 65 32 28 66 21 40 66 22 51 66 34 39 66 33 40 5 22 52 5 37 51 67 34 53 68 39 54 68 38 55 68 10 52 68 0 3 69 0 2 69 39 1 69 38 0 69 10

+
+
+
+ + + + -40 -80.5 40 40 -80.5 40 40 -80.5 -40 -40 -80.5 -40 -40 -77.5711 47.0711 40 -77.5711 47.0711 45 -77.5711 45 47.0711 -77.5711 40 47.0711 -77.5711 -40 45 -77.5711 -45 40 -77.5711 -47.0711 -40 -77.5711 -47.0711 -45 -77.5711 -45 -47.0711 -77.5711 -40 -47.0711 -77.5711 40 -45 -77.5711 45 -40 -70.5 50 40 -70.5 50 47.0711 -70.5 47.0711 50 -70.5 40 50 -70.5 -40 47.0711 -70.5 -47.0711 40 -70.5 -50 -40 -70.5 -50 -47.0711 -70.5 -47.0711 -50 -70.5 -40 -50 -70.5 40 -47.0711 -70.5 47.0711 -40 70.5 50 40 70.5 50 47.0711 70.5 47.0711 50 70.5 40 50 70.5 -40 47.0711 70.5 -47.0711 40 70.5 -50 -40 70.5 -50 -47.0711 70.5 -47.0711 -50 70.5 -40 -50 70.5 40 -47.0711 70.5 47.0711 -40 77.5711 47.0711 40 77.5711 47.0711 45 77.5711 45 47.0711 77.5711 40 47.0711 77.5711 -40 45 77.5711 -45 40 77.5711 -47.0711 -40 77.5711 -47.0711 -45 77.5711 -45 -47.0711 77.5711 -40 -47.0711 77.5711 40 -45 77.5711 45 -40 80.5 40 40 80.5 40 40 80.5 -40 -40 80.5 -40 + + + + + + + + + + -0.0785214 -0.921027 0.381502 0.0785214 -0.921027 0.381502 0 -0.382683 0.92388 0 0 1 0 0.382683 0.92388 -0.0785214 0.921027 0.381502 0.0785214 0.921027 0.381502 0.156558 -0.912487 0.377964 0.357407 -0.357407 0.862856 0.382683 0 0.92388 0.357407 0.357407 0.862856 0.156558 0.912487 0.377964 0.381502 -0.921027 0.0785214 0.377964 -0.912487 0.156558 0.862856 -0.357407 0.357407 0.92388 0 0.382683 0.862856 0.357407 0.357407 0.377964 0.912487 0.156558 0.381502 0.921027 0.0785214 0.381502 -0.921027 -0.0785214 0.92388 -0.382683 -0 1 0 -0 0.92388 0.382683 -0 0.381502 0.921027 -0.0785214 0.377964 -0.912487 -0.156558 0.862856 -0.357407 -0.357407 0.92388 0 -0.382683 0.862856 0.357407 -0.357407 0.377964 0.912487 -0.156558 0.0785214 -0.921027 -0.381502 0.156558 -0.912487 -0.377964 0.357407 -0.357407 -0.862856 0.382683 0 -0.92388 0.357407 0.357407 -0.862856 0.156558 0.912487 -0.377964 0.0785214 0.921027 -0.381502 -0.0785214 -0.921027 -0.381502 0 -0.382683 -0.92388 0 0 -1 0 0.382683 -0.92388 -0.0785214 0.921027 -0.381502 -0.156558 -0.912487 -0.377964 -0.357407 -0.357407 -0.862856 -0.382683 0 -0.92388 -0.357407 0.357407 -0.862856 -0.156558 0.912487 -0.377964 -0.381502 -0.921027 -0.0785214 -0.377964 -0.912487 -0.156558 -0.862856 -0.357407 -0.357407 -0.92388 0 -0.382683 -0.862856 0.357407 -0.357407 -0.377964 0.912487 -0.156558 -0.381502 0.921027 -0.0785214 -0.381502 -0.921027 0.0785214 -0.92388 -0.382683 -0 -1 0 -0 -0.92388 0.382683 -0 -0.381502 0.921027 0.0785214 -0.377964 -0.912487 0.156558 -0.862856 -0.357407 0.357407 -0.92388 0 0.382683 -0.862856 0.357407 0.357407 -0.377964 0.912487 0.156558 -0.156558 -0.912487 0.377964 -0.357407 -0.357407 0.862856 -0.382683 0 0.92388 -0.357407 0.357407 0.862856 -0.156558 0.912487 0.377964 0 1 -0 0 -1 -0 + + + + + + + + + + 0 0 0 0.0455526 0.835876 0.0455526 0.835876 0 0 0.0911051 0.835876 0.0911051 0 0.908895 0.835876 0.908895 0 0.954447 0.835876 0.954447 0 1 0.835876 1 0.876907 0 0.917938 0.0455526 0.917938 0.0911051 0.917938 0.908895 0.917938 0.954447 0.876907 1 0.958969 0 1 0.0455526 1 0.0911051 1 0.908895 1 0.954447 0.958969 1 1 1 1 0 + + + + + + + + + + + + + + + 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 4 4 4 3 4 4 4 3 3 4 4 4 3 4 4 +

1 1 3 5 1 2 4 0 1 0 0 0 5 2 2 17 2 5 16 2 4 4 2 1 17 3 5 29 3 7 28 3 6 16 3 4 29 4 7 41 4 9 40 4 8 28 4 6 41 6 9 53 6 11 52 5 10 40 5 8 6 7 13 5 1 2 1 1 12 6 8 13 18 8 14 17 8 5 5 8 2 18 9 14 30 9 15 29 9 7 17 9 5 30 10 15 42 10 16 41 10 9 29 10 7 42 11 16 53 6 17 41 6 9 7 12 19 6 13 13 1 12 18 7 14 19 19 14 20 18 14 14 6 14 13 19 15 20 31 15 21 30 15 15 18 15 14 31 16 21 43 16 22 42 16 16 30 16 15 43 18 22 53 18 23 42 17 16 2 19 3 8 19 2 7 12 1 1 12 0 8 20 2 20 20 5 19 20 4 7 20 1 20 21 5 32 21 7 31 21 6 19 21 4 32 22 7 44 22 9 43 22 8 31 22 6 44 23 9 54 23 11 53 18 10 43 18 8 9 24 13 8 19 2 2 19 12 9 25 13 21 25 14 20 25 5 8 25 2 21 26 14 33 26 15 32 26 7 20 26 5 33 27 15 45 27 16 44 27 9 32 27 7 45 28 16 54 23 17 44 23 9 10 29 19 9 30 13 2 29 18 10 31 19 22 31 20 21 31 14 9 31 13 22 32 20 34 32 21 33 32 15 21 32 14 34 33 21 46 33 22 45 33 16 33 33 15 46 35 22 54 35 23 45 34 16 3 36 3 11 36 2 10 29 1 2 29 0 11 37 2 23 37 5 22 37 4 10 37 1 23 38 5 35 38 7 34 38 6 22 38 4 35 39 7 47 39 9 46 39 8 34 39 6 47 40 9 55 40 11 54 35 10 46 35 8 12 41 13 11 36 2 3 36 12 12 42 13 24 42 14 23 42 5 11 42 2 24 43 14 36 43 15 35 43 7 23 43 5 36 44 15 48 44 16 47 44 9 35 44 7 48 45 16 55 40 17 47 40 9 13 46 19 12 47 13 3 46 18 13 48 19 25 48 20 24 48 14 12 48 13 25 49 20 37 49 21 36 49 15 24 49 14 37 50 21 49 50 22 48 50 16 36 50 15 49 52 22 55 52 23 48 51 16 0 53 3 14 53 2 13 46 1 3 46 0 14 54 2 26 54 5 25 54 4 13 54 1 26 55 5 38 55 7 37 55 6 25 55 4 38 56 7 50 56 9 49 56 8 37 56 6 50 57 9 52 57 11 55 52 10 49 52 8 15 58 13 14 53 2 0 53 12 15 59 13 27 59 14 26 59 5 14 59 2 27 60 14 39 60 15 38 60 7 26 60 5 39 61 15 51 61 16 50 61 9 38 61 7 51 62 16 52 57 17 50 57 9 4 0 19 15 63 13 0 0 18 4 64 19 16 64 20 27 64 14 15 64 13 16 65 20 28 65 21 39 65 15 27 65 14 28 66 21 40 66 22 51 66 16 39 66 15 40 5 22 52 5 23 51 67 16 53 68 25 54 68 24 55 68 10 52 68 0 3 69 0 2 69 25 1 69 24 0 69 10

+
+
+
+ + + + 0 -50 0 0 50 0 10 -50 -0 10 -50 -0 10 50 -0 10 50 -0 7.07107 -50 -7.07107 7.07107 -50 -7.07107 7.07107 50 -7.07107 7.07107 50 -7.07107 6.12323e-16 -50 -10 6.12323e-16 -50 -10 6.12323e-16 50 -10 6.12323e-16 50 -10 -7.07107 -50 -7.07107 -7.07107 -50 -7.07107 -7.07107 50 -7.07107 -7.07107 50 -7.07107 -10 -50 -1.22465e-15 -10 -50 -1.22465e-15 -10 50 -1.22465e-15 -10 50 -1.22465e-15 -7.07107 -50 7.07107 -7.07107 -50 7.07107 -7.07107 50 7.07107 -7.07107 50 7.07107 -1.83697e-15 -50 10 -1.83697e-15 -50 10 -1.83697e-15 50 10 -1.83697e-15 50 10 7.07107 -50 7.07107 7.07107 -50 7.07107 7.07107 50 7.07107 7.07107 50 7.07107 + + + + + + + + + + 0 -1 -0 1 0 -0 0.707107 0 -0.707107 0 1 -0 0 0 -1 -0.707107 0 -0.707107 -1 0 -0 -0.707107 0 0.707107 0 0 1 0.707107 0 0.707107 + + + + + + + + + + 0.5 0.5 0 0.5 0.146447 0.853553 0 0 0 1 0.125 1 0.125 0 1 0.5 0.853553 0.853553 0.5 1 0.25 1 0.25 0 0.375 1 0.375 0 0.5 0 0.853553 0.146447 0.625 1 0.625 0 0.146447 0.146447 0.75 1 0.75 0 0.875 1 0.875 0 1 1 1 0 + + + + + + + + + + + + + + + 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 3 4 3 +

6 0 2 2 0 1 0 0 0 7 2 6 8 2 5 4 1 4 3 1 3 9 3 8 1 3 0 5 3 7 10 0 9 6 0 2 0 0 0 11 4 11 12 4 10 8 2 5 7 2 6 13 3 9 1 3 0 9 3 8 14 0 8 10 0 9 0 0 0 15 5 13 16 5 12 12 4 10 11 4 11 17 3 2 1 3 0 13 3 9 18 0 7 14 0 8 0 0 0 19 6 14 20 6 9 16 5 12 15 5 13 21 3 1 1 3 0 17 3 2 22 0 15 18 0 7 0 0 0 23 7 17 24 7 16 20 6 9 19 6 14 25 3 18 1 3 0 21 3 1 26 0 14 22 0 15 0 0 0 27 8 20 28 8 19 24 7 16 23 7 17 29 3 14 1 3 0 25 3 18 30 0 18 26 0 14 0 0 0 31 9 22 32 9 21 28 8 19 27 8 20 33 3 15 1 3 0 29 3 14 2 0 1 30 0 18 0 0 0 3 1 24 4 1 23 32 9 21 31 9 22 5 3 7 1 3 0 33 3 15

+
+
+
+ + + + -50 0 50 50 0 50 -50 0 -50 50 0 -50 + + + + + + + + + + 0 1 -0 + + + + + + + + + + 0 0 0 1 1 1 1 0 + + + + + + + + + + + + + + + 4 +

1 0 3 3 0 2 2 0 1 0 0 0

+
+
+
+
+ + + + -23.7123 210.709 24.9106 + 0 1 0 -0 + 1 0 0 0 + 0 0 1 -0 + 1 1 1 + + + + + + + + + + + + 3.20043 174.503 2.82738 + 0 1 0 -0 + 1 0 0 0 + 0 0 1 -0 + 1 1 1 + + + + + + + + + + + + 0 180 -0 + 0 1 0 -0 + 1 0 0 0 + 0 0 1 -0 + 1 1 1 + + + + + + + + + + + + 0 50 -0 + 0 1 0 -0 + 1 0 0 0 + 0 0 1 -0 + 1 1 1 + + + + + + + + + + + + 0 0 -0 + 0 1 0 -0 + 1 0 0 0 + 0 0 1 -0 + 1 1 1 + + + + + + + + + + + + + + + +
diff --git a/examples/test-vertical-align/peach-gradient.jpg b/examples/test-vertical-align/peach-gradient.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1dc145476ffc856f413d5c7027bfcd86a0433ee6 GIT binary patch literal 33067 zcmeI)Ur19?90%}o?zw+oe2JW2xO2KHQ`S2@&ZJ^ao@Xq~U`?gbzO4?#$HDxN&zMwu|2*Y`@*@>>fY+ zopbKFyQ+QE(!|>pIuRn2QgU4XA=($xNw}TD^oa5LE#n0~Qv^}iDxxS!4oMPa+3A#J zcXr9V31y54ydaCBT;h^lC7uI%@p!ggxP9mT^C-LS&Ld4Fii0N(!l*(xg))U|uSrFw zsd{7g6pk`kf2Pt)^_ONnMU~!xgLRo&Ta~hEQBDx`XUdiAD*F2>b=qg*W>nuPQ^-;B zYy8bfV9)*#LI45~fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=g%vo>bCkq` zwO$8;TnLxD{bemeH|>ju(+GfIIul-u6}E%#`@QGt)fnt{M|_(n2wkxIFEFX@ei%sB ze-B24@L)2O=uL$$l~oD|fM7Ng{1aqS^#`1{IRrp3p9$o=&8L`hEb$DF_^SMk6&N2d zNajC545EkquZMMD^2Ow9e)8QuX0!PWOvDL{5QZZ}*>Y-lrFukqoIn5s^Oulk4@a5LQGYjE}fo1@>!Pcj@oqE`2N0unaBV^2CPHnTNH%}{W2Mq2c? zttU2ac&2M(OV|jIqDY1h7Zbr$PkpIV;1J|O;O)K&vU&TfY~Fq}9|D#Hj?GR*Zu;ty zvjbNv5CFk!CY-bT3`YBLp`_8(qM_K=Q+KB8V@sWD&YGc~&6!(^rETlu8%Yl~0;C9% zVd6^j*wjKplWUaw7DNC9vzZ_TaF){2Nm@FIzcetq%u{KblAh7k_(-}M0T9e*!l8#a ze`a_RQB*B0f>GI`fMoZ78fo`cEFW1te7{wgPefCZ6(0g1n9T&ckD#v6N~{5~{>}R& zK>M7xso@b)t}h?=*>|!Ro)`KfvbKL}_Y5Vt6u_{{g(7KRi!e{4aRflfBNN`E zgBf