Zurück   Flashforum > Software > 3D

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-09-2009, 13:29   #1 (permalink)
░▒░▒░▒░▒░▒
 
Benutzerbild von slowkey
 
Registriert seit: Oct 2007
Ort: L.E.
Beiträge: 129
3D Rotation Problem Text unscharf bei rotationY=0

Hallo,

Wenn man die 3D Rotation Property eines Textfeldes setzt, wird dieses plötzlich unscharf, bzw. interpoliert. Das tritt auch bei einem Wert von 0 auf.
Ist das ein Bug in CS4? (Ich arbeite mit 10.0.2.) oder habt ihr ne idee an was das liegen könnte?

das beispiel:
testtext

Code:
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;

var label:TextField = new TextField();
label.autoSize=TextFieldAutoSize.LEFT;
label.background=false;
label.border=false;

var format:TextFormat = new TextFormat();
format.font="Verdana";
format.color=0xFF0000;
format.size=24;


label.defaultTextFormat=format;
label.text="TEST THE 3D TEXT";
addChild(label);
label.addEventListener(MouseEvent.CLICK, testRotation);

function testRotation(e:Event):void{
	label.rotationY=0;
}
__________________
scio nescio
slowkey ist offline   Mit Zitat antworten
Alt 25-09-2009, 14:24   #2 (permalink)
undefined
 
Benutzerbild von mildesign
 
Registriert seit: Jul 2001
Ort: Stuttgart
Beiträge: 1.839
versuch mal;

label.transform.matrix3D = null
dadurch sollte die 3D Transformation wieder deaktiviert werden.
__________________
mfg Frank
mildesign ist offline   Mit Zitat antworten
Alt 25-09-2009, 14:46   #3 (permalink)
Tino W.
Gast
 
Beiträge: n/a
Schmeiß doch mal dein TF in eine Sprite und rotier die mal - kann es grade nicht testen, weil ich hier kein CS4 habe, aber daheim schau ich mal nach, wenn es sich bis dahin noch nicht erledigt hat
  Mit Zitat antworten
Alt 25-09-2009, 15:39   #4 (permalink)
Neuer User
 
Registriert seit: Jan 2004
Beiträge: 50
und wie schauts evt. mit nem cacheAsBitmap auf das Textfeld aus,
wenn der text während der laufzeit nicht geändert wird?
browerman ist offline   Mit Zitat antworten
Alt 25-09-2009, 17:57   #5 (permalink)
░▒░▒░▒░▒░▒
 
Benutzerbild von slowkey
 
Registriert seit: Oct 2007
Ort: L.E.
Beiträge: 129
Also das TF in einen rotierenden Sprite zu packen und chachAsBitmap, waren auch meine ersten gedanken gewesen. das bringt leider keinen Erfolg.

Einen Schritt bin ich weiter gekommen durch
Zitat:
Zitat von mildesign Beitrag anzeigen
versuch mal;

label.transform.matrix3D = null
dadurch sollte die 3D Transformation wieder deaktiviert werden.
label.transform.matrix3D = null; resetet das Textfeld und stellt den Text scharf dar. Es werden aber auch u.a. auch die x/y/z Werte zurückgesetzt.
Deshalb müsste man einen Container benutzen um z.B. nach einem Tween den Text wieder zu reseten.
Ist aber ein unbefriedigender Workaround. Und ändert nichts an der Tatsache, dass sobald eine 3d- EIgenschaft - egal ob die des Containersprites oder die des Textes - geändert wird sich auch die Darstellung des Textes ändert. Es sieht so aus als ob das Antialiasing in Bitmaptext gewandelt.
Hier mal das Beispiel umgedreht von tranformed zu resetet.
Code:
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.text.AntiAliasType;
import flash.geom.Matrix3D;

var label:TextField = new TextField();
label.cacheAsBitmap=true;
label.autoSize=TextFieldAutoSize.LEFT;
label.background=false;
label.border=false;

var format:TextFormat = new TextFormat();
format.font="Verdana";
format.color=0xFF0000;
format.size=24;


label.defaultTextFormat=format;
label.text="CLICK ME TO GET THE 3D BUG";
label.x=100

var sprite:Sprite=new Sprite();
sprite.cacheAsBitmap=true;
sprite.rotationY=0;
sprite.addChild(label);
addChild(sprite);
sprite.addEventListener(MouseEvent.CLICK, testRotation);

function testRotation(e:Event):void{
	trace("REMOVE TRANSFORM");
	sprite.transform.matrix3D = null;
}
__________________
scio nescio

Geändert von slowkey (25-09-2009 um 18:30 Uhr)
slowkey ist offline   Mit Zitat antworten
Alt 25-09-2009, 22:57   #6 (permalink)
in the boondocks
 
Benutzerbild von shin10
 
Registriert seit: Feb 2006
Ort: Augsburg
Beiträge: 3.495
also das is sicher kein bug. wie du vermutest wird der text oder auch alles andere in ein bitmap umgewandelt. ich behaupte einfach mal es ist schneller als anker und vektoren räumlich zu versetzen.

sieh mal hier:
PHP-Code:
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.text.AntiAliasType;
import flash.geom.Matrix3D;

var 
label:TextField = new TextField();
label.cacheAsBitmap=true;
label.autoSize=TextFieldAutoSize.LEFT;
label.background=false;
label.border=false;

var 
format:TextFormat = new TextFormat();
format.font="Verdana";
format.color=0xFF0000;
format.size=2;


label.defaultTextFormat=format;
label.text="CLICK ME TO GET THE 3D BUG";
label.-= label.width>>1
label.-= label.height>>1
//label.x=100

var sprite:Sprite=new Sprite();
//sprite.cacheAsBitmap=true;
sprite.rotationY=0;
sprite.stage.stageHeight>>1;
sprite.stage.stageWidth>>1;
sprite.= -500;
sprite.addChild(label);
addChild(sprite);
sprite.addEventListener(MouseEvent.CLICKtestRotation);

function 
testRotation(e:Event):void{
    
trace("REMOVE TRANSFORM");
    
sprite.transform.matrix3D null;

oder umgekehrt

PHP-Code:
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.text.AntiAliasType;
import flash.geom.Matrix3D;

var 
label:TextField = new TextField();
label.cacheAsBitmap=true;
label.autoSize=TextFieldAutoSize.LEFT;
label.background=false;
label.border=false;

var 
format:TextFormat = new TextFormat();
format.font="Verdana";
format.color=0xFF0000;
format.size=48;


label.defaultTextFormat=format;
label.text="CLICK ME TO GET THE 3D BUG";
label.-= label.width>>1
label.-= label.height>>1
//label.x=100

var sprite:Sprite=new Sprite();
//sprite.cacheAsBitmap=true;
sprite.rotationY=0;
sprite.stage.stageHeight>>1;
sprite.stage.stageWidth>>1;
sprite.500;
sprite.addChild(label);
addChild(sprite);
sprite.addEventListener(MouseEvent.CLICKtestRotation);

function 
testRotation(e:Event):void{
    
trace("REMOVE TRANSFORM");
    
sprite.transform.matrix3D null;

//gelegentlich bekommt man ja auch mal ne fehlermeldung, das der inhalt nicht angezeigt werden kann, weil eine gewisse größe überschritten wird...

mfg

sx

Geändert von shin10 (25-09-2009 um 22:58 Uhr)
shin10 ist offline   Mit Zitat antworten
Alt 26-09-2009, 12:45   #7 (permalink)
░▒░▒░▒░▒░▒
 
Benutzerbild von slowkey
 
Registriert seit: Oct 2007
Ort: L.E.
Beiträge: 129
Ja shin10 hat recht. Das ist gar kein Text spezifischen Problem, es liegt an der 3D API. Es wird alles durch eine Bitmap dargestellt auch in Vektoren gewandelter Text oder graphic objecte.
Code:
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.text.AntiAliasType;
import flash.geom.Matrix3D;

var shape:Shape = new Shape();
shape.graphics.beginFill(0x000000);
shape.graphics.lineStyle(2, 0xFF0000);
shape.graphics.drawRect(0, 0, 300, 300);
shape.graphics.endFill();
addChild(shape);
shape.rotationY=0;
stage.addEventListener(MouseEvent.CLICK, removeTransform);
function removeTransform(e:Event):void {
	trace("REMOVE TRANSFORM");
	shape.transform.matrix3D = null;
}
Bin leider weder in der Flashdoku, noch in den livedocs fündig geworden, was da nun genau passiert. Bei papervision wirds wahrscheinlich das gleiche Problem geben, da dort ja der Text als Textur gemappt wird.
Da ich bei nach jedem Tween sowieso bei 360, bzw. 0 ankommen will, resete ich zähneknirschend die Tranformation am Ende des Tweens
Code:
shape.transform.matrix3D = null;
__________________
scio nescio

Geändert von slowkey (26-09-2009 um 12:51 Uhr)
slowkey ist offline   Mit Zitat antworten
Alt 08-02-2010, 19:32   #8 (permalink)
Neuer User
 
Registriert seit: Aug 2009
Ort: Berlin
Beiträge: 271
Zitat:
Zitat von slowkey Beitrag anzeigen
Ja shin10 hat recht. Das ist gar kein Text spezifischen Problem, es liegt an der 3D API. Es wird alles durch eine Bitmap dargestellt auch in Vektoren gewandelter Text oder graphic objecte....
Alle Displayobjekte werden je nach z-Tiefe verzerrt, auch Textfelder!

Bei meinem Projekt wollte ich das nicht, daher habe ich Platzhalter in den 3D-Raum gesetzt und positioniere 2D-Objekte an die Bühnenposition der 3D-Platzhalter.

var p:Point= obj.local3DToGlobal( new Vector3D(0, 0, -1));

Und bei PV3D wird die Position mitberechnet wenn

obj.autoCalcScreenCoords= true;
obj.screen.x
obj.screen.y
__________________
MfG toosten

IDE: Adobe® Flex® Builder™ 3, Adobe® Flash® Builder™ 4
toosten ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
3d api, flash text

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
rotationY Problem auf anderem Rechner derMikey ActionScript 3 2 09-07-2009 18:40
Text unscharf CaptainCT Flash Einsteiger 2 27-06-2007 09:00
Text is unscharf und bei dynamischen text alle versetzt und nur die hälfte sichtbar Le Roc Flash MX 2 24-04-2004 13:52
Text unscharf... DJZeus Flash 4 und Flash 5 6 13-06-2003 15:16


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:39 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele