Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Gráficos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-12-2008
andarcio andarcio is offline
Miembro
 
Registrado: abr 2007
Posts: 18
Poder: 0
andarcio Va por buen camino
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:
  1. "quisiera que el texto se represente directamente en el plano de
    pantalla" (esto se puede hacer con tglhudtext pero no con tglflattext)
  2. quisiera que el texto este enlazado a un pto en 3D,que al rotar la comara este cambie de posicion en la pantalla segun cambia el atomo. (esto se puede hacer con tglflattext pero no con tglhudtext )
gracias
y espero no quitarles tiempo
sldos
Responder Con Cita
  #2  
Antiguo 14-12-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
Hola,

prueba GLSpaceText

link
Responder Con Cita
  #3  
Antiguo 14-12-2008
andarcio andarcio is offline
Miembro
 
Registrado: abr 2007
Posts: 18
Poder: 0
andarcio Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 15-12-2008
[coso] coso is offline
Miembro Premium
 
Registrado: may 2008
Ubicación: Girona
Posts: 1.678
Poder: 0
coso Va por buen camino
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:
"quisiera que el texto se represente directamente en el plano de pantalla"
que significa esto bien bien?

PD: voy a revisarlo, luego si de caso contesto otra vez
Responder Con Cita
  #5  
Antiguo 16-12-2008
andarcio andarcio is offline
Miembro
 
Registrado: abr 2007
Posts: 18
Poder: 0
andarcio Va por buen camino
Cita:
que significa esto bien bien?
aqui encontre algo que explica mejor lo que quiero decir

Cita:
TGLHUDText Displays text on the screen using 2D screen coordinates. 3D direction and position arent used with hudtext. Use TGLFlatText to display text in 3D.
o sea TGLHUDText muestra un texto usando las coordenadas 2D de la pantalla (que es exactamente lo que quiero). pero no se le puede asociar una posicion en el espacio 3D.
y por ultimo espero que me halla explicado mejor ahora

si tienen alguna idea benvenuti

sldos
Responder Con Cita
  #6  
Antiguo 16-12-2008
andarcio andarcio is offline
Miembro
 
Registrado: abr 2007
Posts: 18
Poder: 0
andarcio Va por buen camino
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;
Responder Con Cita
  #7  
Antiguo 16-12-2008
andarcio andarcio is offline
Miembro
 
Registrado: abr 2007
Posts: 18
Poder: 0
andarcio Va por buen camino
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;
gracias por la ayuda

sldos
Responder Con Cita
  #8  
Antiguo 07-04-2009
c4_esp_VR c4_esp_VR is offline
Registrado
 
Registrado: ago 2007
Posts: 5
Poder: 0
c4_esp_VR Va por buen camino
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);
Si creo el texto estáticamente desde el editor del GLScene funciona perfectamente pero dinámicamente no me deja.

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.
Responder Con Cita
  #9  
Antiguo 08-04-2009
c4_esp_VR c4_esp_VR is offline
Registrado
 
Registrado: ago 2007
Posts: 5
Poder: 0
c4_esp_VR Va por buen camino
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;
Si alguien encuentra la solución óptima que la comparta

Un saludete y gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 23:34:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi