Page 2 sur 2
Publié : lun. 11/févr./2008 21:28
par Anonyme
Tiens voila le prochain moteur de rendu pour HalfLife 3
Attention 320x240 pixel en résolution
C'est que du tripatouillage

pas d'instruction 3D préfabriqué
File:1->
3DSoftwareZBuffer.rar

Publié : lun. 11/févr./2008 22:00
par tmyke
Bien sympa ton code
mais au depart Fortix voulais juste tracer une ligne 3D et toi tu lui sort le code
complet d'une moteur 3D.
Le jour ou il demandera comment créer une scene 3D tu lui propose quoi ?

Publié : mar. 12/févr./2008 10:56
par Fortix
oulà, c'est le bordel
pour faire simple

:
au mieu : touts en 3D, c'est à dire: 1er et 2em points xyz, puis liaison entre poin 1 et 2 par un "trait 3D"
sinon : une alternative, c'est à dire une methode autre que la 3D
si: celle ci presente un rendut instantané et dynamique comme sur la 3D et quelques soit l'angle de la camera,
je pense que je peux faire plus simple

, ....si besion s'en fait sentir!
Publié : mar. 12/févr./2008 19:49
par Anonyme
touts en 3D, c'est à dire: 1er et 2em points xyz, puis liaison entre poin 1 et 2 par un "trait 3D"
Tu n'as pas l'air de comprendre
Comment veut tu afficher une Profondeur Z sans la projection ?
je vais te codé un exemple de ligne "3D"
Publié : mar. 12/févr./2008 20:06
par Anonyme
Code : Tout sélectionner
Sw_=1024
Sh_=768
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0 Or InitSound() = 0 Or InitSprite3D() = 0
End
EndIf
OpenScreen(Sw_,Sh_,32,"")
Structure VECTOR2
x.f
y.f
EndStructure
Structure VECTOR3
x.f
y.f
z.f
EndStructure
Structure SEGMENT3D
A.VECTOR3
B.VECTOR3
EndStructure
Structure SEGMENT2D
A.VECTOR2
B.VECTOR2
EndStructure
MaLigne3D.SEGMENT3D
; Premier point 3D
MaLigne3D\A\x = -100
MaLigne3D\A\y = 100
MaLigne3D\A\z = -1000
; Le second...
MaLigne3D\B\x = 100
MaLigne3D\B\y = 100
MaLigne3D\B\z = -1000
;Projection de la ligne 3D sur l'ecran...
MaLigne3D_Projetion.SEGMENT2D
Gosub Projection
Repeat
ExamineKeyboard() : ExamineMouse()
ClearScreen(0)
; On joue avec la profondeur (Z) de cette ligne ( entre 0 et 200 sur 1 seconde )
MaLigne3D\A\z = 100 + 100 * Cos(ElapsedMilliseconds()/1000)
MaLigne3D\B\z = 100 + 100 * Cos(ElapsedMilliseconds()/1000)
Gosub Projection
Gosub Trace
FlipBuffers(2)
Until KeyboardPushed(#PB_Key_Escape)
End
Projection:
; Projection du premier point
MaLigne3D_Projetion\A\x = (MaLigne3D\A\x * 512) / (MaLigne3D\A\z + 150) + Sw_/2
MaLigne3D_Projetion\A\y = (MaLigne3D\A\y * 512) / (MaLigne3D\A\z + 150) + Sh_/2
; du second...
MaLigne3D_Projetion\B\x = (MaLigne3D\B\x * 512) / (MaLigne3D\B\z + 150) + Sw_/2
MaLigne3D_Projetion\B\y = (MaLigne3D\B\y * 512) / (MaLigne3D\B\z + 150) + Sh_/2
Return
Trace:
StartDrawing(ScreenOutput())
LineXY(MaLigne3D_Projetion\A\x,MaLigne3D_Projetion\A\y,MaLigne3D_Projetion\B\x,MaLigne3D_Projetion\B\y,RGB(64,128,255))
StopDrawing()
Return
Edit: Après si tu veut appliqué des rotations transformation , caméra etc...
c'est plus complexe , il faut passé par des calculs de matrices
Publié : mer. 13/févr./2008 10:56
par Fortix
c'est vraiement bien fluide,
mais je pense qu'un trait à la suite d'un autre trait mais orienté differement et le tout en rotation sur eux même, sera une histoire différente
pour information, je viens de mettre au point un veritable Trait 3D xyz
(4 vertices 2 triangles) et c'est très impressionnant de voire une entitée trait longue qui dechire en deux l'univers 3D!!, mais il y a 2 obstacles avant la mise aupoint finale
mais je n'esclut pas ton idée de projection
merci pour ton code
Publié : mer. 13/févr./2008 12:33
par Fortix
C 'est bon,
je viens de mettre au point un system certe extremement complex mais robuste ce matin même
il sagit donc d'un trait parfait visible sous trois angles xyz,avec en prime la possibillitée de texturé en couleurs dégradé, translucide, ->
possibillitée de mêler une couche openGL,....etc
cela risque de boulverser la programmation 3D avec le basic 3D'ogre de PBV4
reste la mise en forme finale réutilisable pour tous
en tous cas, un très grand MERCI aux intervenants en particulier à @Cpl.Bator qui s'est dévoué à apprendre une methode précise à "un dûre à cuire" que je suis
et à
*Tmyke qui ma donné la "puce à l'oreille" en plein milieu de ce Topic
le rendut est spétaculaire
