Page 1 sur 1

Je n'arrive pas à centrer horizontalement un texte 3D

Publié : mar. 07/mars/2023 22:49
par falsam
Tout est dans le titre alors voici le code de test.

Code : Tout sélectionner

EnableExplicit

; DPI Résolution
Global drx.f, dry.f, t

; Node Cube et texte 3D
Global node, cube, text3d

drx = DesktopResolutionX()
dry = DesktopResolutionY()

InitEngine3D(#PB_Engine3D_DebugLog) : InitSprite() : InitKeyboard()

ExamineDesktops()
OpenWindow(0, 0,0, DesktopWidth(0)*0.5,DesktopHeight(0)*0.5, "CreateShader - [Esc] quit",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0)*drx, WindowHeight(0)*dry, 0, 0, 0)

; Localisation des assets pour le texte 3D
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/fonts", #PB_3DArchive_FileSystem)
Parse3DScripts()

; Camera
CreateCamera(0, 0, 0, 100, 100) 
MoveCamera(0, 0, 0, -6) 
CameraLookAt(0, 0, 0, 0)
CameraBackColor(0, RGB(211, 211, 211))

; Lumiere
CreateLight(0, RGB(211, 211, 211), -100, 100, 0)
AmbientColor(RGB(154, 205, 50))

; Une entité 
cube = CreateEntity(#PB_Any, MeshID(CreateCube(#PB_Any, 0.1)), #PB_Material_None)

; Le texte couleur rouge
text3d = CreateText3D(#PB_Any, "Hello World", "", 0.5, RGBA(255, 255, 255, 255))
Text3DAlignment(text3d, #PB_Text3D_HorizontallyCentered)

; Un node sur lequel j'attache le cube puis le texte
node = CreateNode(#PB_Any, -4, 0, 0)
AttachNodeObject(node, EntityID(cube))
AttachNodeObject(node, Text3DID(text3d))

t=1

Repeat
  While WindowEvent() : Wend
  ExamineKeyboard() 
  
  MoveNode(node, 0.004 * t, 0, 0, #PB_Relative)
  
  If NodeX(node) > 4
    t*-1
  EndIf
  
  If NodeX(node) < -4
    t*-1
  EndIf
  
  RenderWorld()
  FlipBuffers()    
Until KeyboardReleased(#PB_Key_Escape)
D'avance merci pour votre aide ;)

Re: Je n'arrive pas à centrer horizontalement un texte 3D

Publié : mer. 08/mars/2023 20:42
par falsam
J'ai modifié le code précédent. le cube bouge de gauche à droite puis de droite à gauche.

la position du texte par rapport au cube change durant la trajectoire du cube.

:?: Alors comment faire pour centrer le texte sur l'axe vertical du cube ?

Re: Je n'arrive pas à centrer horizontalement un texte 3D

Publié : mer. 08/mars/2023 21:19
par SPH
Ligne 36 :

Code : Tout sélectionner

text3d = CreateText3D(#PB_Any, "Hello World", "", 1, RGBA(255, 255, 255, 255))
C'est "centré" comme ça que tu cherches ?

Re: Je n'arrive pas à centrer horizontalement un texte 3D

Publié : mer. 08/mars/2023 23:48
par falsam
@SPH Je souhaite que le cube soit centré sur le milieu du texte quelque soit le texte.

Hello world
       

Re: Je n'arrive pas à centrer horizontalement un texte 3D

Publié : jeu. 09/mars/2023 0:53
par SPH
Tout en laissant le cube en dessous du texte ? (je veux dire, tu ne remonteras pas le cube qui viendra percuter le texte ?)

Re: Je n'arrive pas à centrer horizontalement un texte 3D

Publié : jeu. 09/mars/2023 1:18
par SPH
J'ai farfouillé, j'ai cherché et la seule explication que j'ai trouvé dans ma tete est que le cube est plus proche de la camera que le texte. D'où ce décallage. :idea:

Re: Je n'arrive pas à centrer horizontalement un texte 3D

Publié : jeu. 09/mars/2023 11:28
par Guillot
ouai, c'est un bug
de plus je m'aperçois qu'il n'y a pas la constante #right dans Text3DAlignment
je vais regarder ça

Code : Tout sélectionner

; DPI Résolution
Global.f drx, dry, a,y


drx = DesktopResolutionX()
dry = DesktopResolutionY()

InitEngine3D(#PB_Engine3D_DebugLog) : InitSprite() : InitKeyboard()

ExamineDesktops()
OpenWindow(0, 0,0, DesktopWidth(0)*0.5,DesktopHeight(0)*0.5, "CreateShader - [Esc] quit",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0)*drx, WindowHeight(0)*dry, 0, 0, 0)

; Localisation des assets pour le texte 3D
Add3DArchive(#PB_Compiler_Home + "examples/3d/Data/fonts", #PB_3DArchive_FileSystem)
Parse3DScripts()

CreateCamera(0, 0, 0, 100, 100) 
CameraBackColor(0, RGB(211, 211, 211))

CreateLight(0, RGB(211, 211, 211), -100, 100, 0)
AmbientColor(RGB(154, 205, 50))

For i=0 To 10
  CreateText3D(i, Left("BLABLABLABLABLABLA",Random(10)+1), "", 1, RGBA(255, 255, 255, 255))
  Text3DAlignment(i, #PB_Text3D_HorizontallyCentered)
  y=(i-5)*1.5
  MoveText3D  (i,0,y,0)
  CreateLine3D(i,0,y,0,$ff,0,y+1,0,$ff)
Next

Repeat
  While WindowEvent() : Wend
  a+0.1
  MoveCamera(0,Cos(a)*20,0,Sin(a)*20,#PB_Absolute)
  CameraLookAt(0,0,0,0)
  ExamineKeyboard() 
  RenderWorld()
  FlipBuffers()    
Until KeyboardReleased(#PB_Key_Escape)

Re: Je n'arrive pas à centrer horizontalement un texte 3D

Publié : jeu. 09/mars/2023 15:07
par falsam
Ce qui est étonnant c'est de voir que le texte3D se positionne de manière différente suivant la position du node.

Idem si on positionne le texte3D sur une entité.