FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
textos 2D con glscene
Hola
Estoy haciendo un programa para representar proteinas con glscene, el problema es que necesito identificar cada atomos con una letra y ninguno de los objetos de glscene que he visto -tglflattext y tglhudtext- lo hace , ya que:
y espero no quitarles tiempo sldos |
#3
|
|||
|
|||
coso
con tglspacetext sucede igual que con tglflattext -no puedo representar el texto en el plano de la pantalla, o sea, lo que se representa es el rendering de un modelo 3d de texto. al mover la camara este modelo se ve de angulos diferente y no se representa precisamente como las letras que ahora ves si me dieran alguna otra solucion se lo agradeceria sldos |
#4
|
|||
|
|||
Es raro, el tglflattext es para exactamente eso que dices. Y mediante el tglHudText o bien sacando texto a un tglHudSprite, tansolo tendras que encontrar las coordenadas proyectadas del objeto en el glscene a pantalla y recolocar. Aunque ya digo que el tglflattext es exactamente lo que hace: un objeto en 3D que siempre se ve plano.
Cita:
PD: voy a revisarlo, luego si de caso contesto otra vez |
#5
|
|||
|
|||
Cita:
Cita:
y por ultimo
si tienen alguna idea benvenuti sldos |
#6
|
|||
|
|||
acabo de resolver el problema utilizando tglflattext
he aqui el codigo Código:
Camera.MoveAroundTarget(dy, dx); //despues de mover la camara a:=tglcoordinates.Create(self); flattext.Up.X:=0; flattext.Up.Y:=1; flattext.Up.Z:=0; with Camera.Position do begin a.x:=((x)/sqrt(sqr(x)+sqr(z)+sqr(y))); a.z:=((z)/sqrt(sqr(x)+sqr(z)+sqr(y))); a.y:=((y)/sqrt(sqr(x)+sqr(z)+sqr(y))); end; flattext.Direction:=a; |
#7
|
|||
|
|||
acabo de resolver el problema utilizando tglflattext
he aqui el codigo qu e tuve que utilizar para mantener el texto de frente a la camara. Código:
Camera.MoveAroundTarget(dy, dx); //despues de mover la camara a:=tglcoordinates.Create(self); flattext.Up.X:=0; flattext.Up.Y:=1; flattext.Up.Z:=0; with Camera.Position do begin a.x:=((x)/sqrt(sqr(x)+sqr(z)+sqr(y))); a.z:=((z)/sqrt(sqr(x)+sqr(z)+sqr(y))); a.y:=((y)/sqrt(sqr(x)+sqr(z)+sqr(y))); end; flattext.Direction:=a; sldos |
#8
|
|||
|
|||
Hola compañeros:
Estoy intentando crear dinámicamente un texto con GLScene pero este no se me visualiza por pantalla. El código es el sigiuente: Código:
//Creamos una clase que contiene los siguientes atributos IDGraph : TGLHUDText; //Texto GraphStoredBitmapFont: TGLStoredBitmapFont;//Biblioteca para el tratamiento de texto //En el constructor ponemos //Creamos el editor de texto self.GraphStoredBitmapFont:=TGLStoredBitmapFont.Create(self); self.GraphStoredBitmapFont.Font.Charset:=ANSI_CHARSET; self.GraphStoredBitmapFont.Font.Color:=clWhite; self.GraphStoredBitmapFont.Font.Height:=-11; self.GraphStoredBitmapFont.Font.Name:='Verdana'; self.GraphStoredBitmapFont.Font.Size:=8; self.GraphStoredBitmapFont.Font.Style:=[fsBold,fsItalic]; self.GraphStoredBitmapFont.Ranges[0].StartASCII:=#32; self.GraphStoredBitmapFont.Ranges[0].StartGlyphIdx:=0; self.GraphStoredBitmapFont.Ranges[0].StopASCII:='}'; //Creamos el texto self.IDGraph := TGLHUDText.Create(self.scene.Objects.AddNewChild(TGLHUDText)); self.IDGraph.Text:='Graph'; self.IDGraph.Position.SetPoint(0,0,0); self.IDGraph.Visible:=True; self.IDGraph.BitmapFont := self.GraphStoredBitmapFont; self.IDGraph.Alignment := taLeftJustify; self.IDGraph.Layout := tlTop; self.IDGraph.ModulateColor.AsWinColor:=clWhite; self.IDGraph.Scale.SetVector(1,1,1); self.IDGraph.Up.SetVector(0,1,0); Soy capaz de crear dinámicamente una tetera, planos, lineas, etc...pero el texto soy incapaz y no sé porqué, cualquier ayuda sería de agradecer. Sin más muchas gracias. Última edición por c4_esp_VR fecha: 07-04-2009 a las 12:16:13. |
#9
|
|||
|
|||
Hola compañeros:
He encontrado una solución, no es óptima, pero es una solución xD. En el evento AfterRender del GLSceneViewer hay que crear un canvas y pintar en este, de la forma sigiuente: Código:
procedure TForm1.GLSceneViewer2AfterRender(Sender: TObject); var canvas : TCanvas; begin canvas:=TCanvas.Create; try canvas.Handle:=GLSceneViewer2.RenderDC; canvas.Brush.Style := bsClear; canvas.Font.Name := 'Verdana'; canvas.Font.Color := clWhite; canvas.TextOut(3, 3+canvas.TextHeight('A'), 'Texto'); end; finally canvas.Free; end; end; Un saludete y gracias. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Centralizar Textos | Paulao | Impresión | 0 | 02-04-2008 19:30:54 |
GLScene? | PiornoCKA&G | Gráficos | 2 | 25-01-2007 10:09:37 |
GlScene | Rabata | Gráficos | 2 | 12-06-2006 16:16:32 |
GlScene??? | Rabata | Gráficos | 1 | 08-01-2005 21:46:46 |
Procesador de textos | mahiques | Varios | 4 | 06-05-2003 10:16:48 |
|