javascript - Perspektiivimuunnos kuvalla täytetylle objektille fabricjs:ssä
Meillä on joitakin objekteja, jotka on täytetty kuvalla. Onko mahdollista saavuttaa kuvan perspektiivinen muunnos säätämällä suorakulmaisen ruudukon paikkoja Fabric.js:ssä?
Yritän saavuttaa jotain samanlaista kuin yllä olevassa kuvassa Fabric JS:ssä...
Vastaus #1
Todelliset perspektiivivääristymät eivät ole mahdollisia FabricJS:llä tai muilla 2D-kangas-kirjastoilla.
Canvasin 2D-konteksti ei tee perspektiivimuunnoksia.
Suurin osa kankaan kirjastoista, mukaan lukien fabricJS, käyttää 2D-konteksteja.
On olemassa kangas 3D-konteksti -- WebGL, joka tekee hyvän jäljittelyn perspektiivimuunnoksista.
mrdoobin threeJS-kirjasto on hyvä 3D-kontekstikirjasto:
http://mrdoob.github.io/three.js/
[ lisäys: perspektiivin vääristymättömät siirrot ovat mahdollisia (tulokset ovat aina alkuperäisen kanssa rinnakkaisia) ]
FabricJS:ssä sinulla on täydellinen hallinta muunnosmatriisiin.
Voit käyttää tuota matriisia tehdäksesi vain rinnakkaista vinouttamista.
Tässä on Fiddle: http://jsfiddle.net/m1erickson/Rq7hk/
Kuinka :
fabricObject.transformMatrix ottaa 6 elementin taulukon, jossa jokainen elementti edustaa osaa affiinisen muunnosmatriisin osista.
Siinä matriisissa toinen ja kolmas alkio edustavat SkewY:tä ja SkewX:ää.
Joten luodaksesi skewY:n, voit luoda suorakulmion näin:
var rect = new fabric.Rect({
left: 150,
top: 150,
width: 75,
height: 50,
fill: 'green',
angle: 0,
padding: 10,
transformMatrix:[1,.30,0,1,0,0]
});
Vastaus #2
Löysin ratkaisun FabricJS:lle käyttämällä monikulmiota ja PHP-ImageMagickia. Voit yhdistää molemmat.
