javascript - Perspektivtransformation av objekt fyllt med bild i fabricjs


Vi har några objekt fyllda med bildkälla. Är det möjligt att uppnå perspektivtransformation av den fyllda bilden genom att justera rektangulära rutnätspositioner i Fabric.js?

jag försöker uppnå något liknande som bilden ovan i fabric js....

Svar #1

Verkliga perspektivförvrängningar är inte möjliga med FabricJS eller andra 2D-canvasbibliotek.

Canvas 2D-kontext kommer inte att utföra perspektivtransformationer.

De flesta canvas-bibliotek, inklusive fabricJS, använder 2D-kontexter.

Det finns ett canvas 3D-kontext -- webGL som kommer att göra en bra imitation av perspektivtransformer.

ThreeJS-biblioteket av mrdoob är ett bra 3D-kontextbibliotek:

http://mrdoob.github.io/three.js/

[ tillägg: icke-perspektivisk snedvridning är möjlig (resultaten är alltid parallella med originalet) ]

I fabricJS har du fullständig kontroll över transformationsmatrisen.

Du kan använda den matrisen för att göra parallell-endast snedvridning.

Här är en Fiddle: http://jsfiddle.net/m1erickson/Rq7hk/

Hur :

fabricObject.transformMatrix tar en array med 6 element där varje element representerar delarna av en affin transformationsmatris.

I den matrisen representerar det 2:a och 3:e elementet SkewY och SkewX.

Så för att skapa din skewY kan du skapa en rektangel så här:

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]
});

Svar #2

Jag hittade en lösning för fabricjs, genom att använda polygon och php-imagemagick. Du kan kombinera båda.