GetScriptMaterial() et mise à jour du material

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

GetScriptMaterial() et mise à jour du material

Message par blendman »

Salut

Je suis en train de créer un petit éditeur de material, histoire de pouvoir modifier un material et de voir en temps réel les modifications.

Je me suis donc concoter la procedure suivante pour charger mes material :

Code : Tout sélectionner

Procedure MaterialLoad()
  mat$=OpenFileRequester("Get a Material","","*.material",0)
  If mat$ <>"" And GetExtensionPart(mat$)="material"
    ; Parse3DScripts() ; pour essayer d'actualiser le material
    mat$=RemoveString(GetFilePart(mat$),".material")
    GetScriptMaterial(#material,mat$)
    SetEntityMaterial(#Entity,MaterialID(#material))
  Else   
    MessageRequester("Error","Please, select a valid *.material")
  EndIf
EndProcedure
Et ça marche très bien sur les material pré-chargés.
Mais par contre, si je change un paramètre du material pour le moment avec notepad++, la modification n'est pas effective si je recharge ce material.

J'ai essayé de créer un nouveau material de la manière suivante :

Code : Tout sélectionner

mat$=OpenFileRequester("Get a Material","","*.material",0)
  If mat$ <>"" And GetExtensionPart(mat$)="material"
    CreateTexture(#Texture,256,256)
    texture = GetScriptTexture(#Texture, mat$) 
    mat$=RemoveString(GetFilePart(mat$),".material")
   ;CreateMaterial(#material,TextureID(texture))
    GetScriptMaterial(#material,mat$)
    SetEntityMaterial(#Entity,MaterialID(#material))
  Else   
    MessageRequester("Error","Please, select a valid *.material")
  EndIf

mais là, paf le chien mon objet devient tout noir, quelque soit le material sélectionné..

D'où ma question :
comment puis-je mettre à jour mon *.material ou en charger un qui n'était pas à la base dans le dossier défini par :

Code : Tout sélectionner

 
Add3DArchive("Data/Models", #PB_3DArchive_FileSystem)
Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem) 
Add3DArchive("Data/Material", #PB_3DArchive_FileSystem)
Parse3DScripts()
Merci beaucoup :).

Voici le code de mon éditeur de material si vous voulez testé directement.
C'est très loin d'être terminé bien entendu ;).

Code : Tout sélectionner

;{ Infos
; Pure Material Editor
; To create and /or modify a *.material and see the result in real time
; a simple viewer of object3D (mesh) and material/shader for PureOgre (ogre in purebasic ^^)
; date : 30 april 2012
; author : blendman
; pb : 4.61b2 win xp x32
;}

;{ constantes, enumeration
; UI
#WindowMain = 0
#statusbar= 0
#MainMenu=0

Enumeration ; gadget window
  ;{ panel lieft
  #PanelLeft
 
  ; Material
  #MaterialLoad
  #TextureInSameDir
  #MaterialName
  #MaterialCastShadow
 
  ; panel Bank
  #panelBank
  #gadget_bank_List
  #gadget_bank_Theme
  #gadget_bank_Group
  ;}
  ;{ panel right
  #PanelRight
 
  #Gadget_WorldShadow
  #Gadget_ViewZoom
  #cameraLookAt
  #Gadget_SizeMesh
  ;} 
EndEnumeration

;{ 3D
#Camera=0
#CameraSpeed = 5


#MeshSphere =0
#Entity=0
#material =0
#texture = 0

Enumeration ; light
  #light1
  #light2
  #light3
EndEnumeration

;}

;}

;{ structures
Structure Stcamera
  lookat.a : ViewZoom.a
  SizeMesh.a : typeobj.a
EndStructure
Global camera.Stcamera
camera\ViewZoom = 1
camera\SizeMesh = 10
;}

;{ variables
VersionNum.s{6} = StrD(#pb_Editor_CompileCount/10000+0.1) : Version$ = VersionNum
PanelParameterH.w = 400 : PanelTexture.a= 200 : BottomSpace=60
Global PanelParameter.a = 200 ,TopSpace.a = 35
Global ScreenHeight.w,ScreenWidth.w,inscreen.a
;}

;{ declare
Declare Error(message$)
Declare EventKeyboard() : Declare GestionMouse()
Declare ChangeObject(mode=0)
Declare.a Screen3DEvents()
;}

;{ macros
;}

;{ init
If InitEngine3D() = 0 Or InitSprite()=0 Or InitKeyboard()=0 Or InitMouse() = 0 
  Error("Unable To initialize DirectX")
Else
  Add3DArchive("Data/Models", #PB_3DArchive_FileSystem)
  Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
  Add3DArchive("Data/Material", #PB_3DArchive_FileSystem)
  Parse3DScripts()
EndIf
;}

;{ window
;{ openWindow
If ExamineDesktops()
  ScreenX = DesktopWidth(0) : ScreenY = DesktopHeight(0)-32
  ScreenD = DesktopDepth(0) : ScreenF = DesktopFrequency(0)
EndIf
flag= #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget|#PB_Window_Maximize
If OpenWindow(#WindowMain, 0, 0, ScreenX, ScreenY, "Pure Shader Editor (Version "+Version$+")", flag)=0
  Error("Unable To open a Window")
Else
  ;}
 
  ;{ create the menu
  If CreateMenu(#MainMenu, WindowID(#WindowMain))
    MenuTitle("File"); 0 -> 40
    MenuItem(1,"New Material")
    MenuBar()
    MenuItem(2,"Open Material (.material)")
    MenuItem(3,"Import Material")
    MenuBar()
    MenuItem(4,"Save Material")
    MenuItem(5,"Save Material as ...")
    MenuBar()
    MenuItem(0, "Quit")
   
    MenuTitle("Object");301-> 350
    MenuItem(304, "Sphere"+Chr(9)+"(S)")
    MenuItem(302, "Cube"+Chr(9)+"(C)")   
    MenuItem(303, "Plane"+Chr(9)+"(P)")
    MenuItem(301, "Load Object"+Chr(9)+"(A)")   
    MenuItem(305, "Suzanne"+Chr(9)+"(Z)") 
    MenuBar()
   
    MenuTitle("World");401-> 440
    MenuItem(401,"Ambient Color")
   
    MenuTitle("Help");81-> 120
    MenuItem(81, "About")
    MenuItem(82, "Informations")
  EndIf
  ;}
  ;{ shortcut
  AddKeyboardShortcut(#WindowMain,#PB_Shortcut_A,301)
  AddKeyboardShortcut(#WindowMain,#PB_Shortcut_C,302)
  AddKeyboardShortcut(#WindowMain,#PB_Shortcut_P,303)
  AddKeyboardShortcut(#WindowMain,#PB_Shortcut_S,304)
  AddKeyboardShortcut(#WindowMain,#PB_Shortcut_Z,305)

  ;}
  ;{ create the status bar
  If CreateStatusBar(#statusbar,WindowID(#WindowMain))
    AddStatusBarField(50)
    AddStatusBarField(200)
    AddStatusBarField(400)
  EndIf
  ;}
  ;{ the gadget
  If PanelGadget(#PanelLeft,5,30,PanelParameter+5,PanelParameterH)
    AddGadgetItem(#PanelLeft,0,"Material")
    CheckBoxGadget(#TextureInSameDir,5,5,130,20,"Same Dir for texture")
    ButtonGadget(#MaterialLoad,5,25,60,20,"Load Mat")
   
   
    AddGadgetItem(#PanelLeft,1,"Texture")
   
   
   
   
    CloseGadgetList()
  EndIf
  If PanelGadget(#PanelRight,DesktopWidth(0)-5-PanelTexture,30,PanelTexture+5,PanelParameterH)
    AddGadgetItem(#PanelRight,0,"Shader")
   
    AddGadgetItem(#PanelRight,1,"Option")
    CheckBoxGadget(#cameraLookAt,5,5,140,20,"Camera Look At Object")
   
    SpinGadget(#Gadget_ViewZoom,5,25,30,20,1,500,#PB_Spin_Numeric)
    GadgetToolTip(#Gadget_ViewZoom,"View Zoom")
    SetGadgetState(#Gadget_ViewZoom,camera\ViewZoom)
   
    SpinGadget(#Gadget_SizeMesh,5,50,30,20,1,500,#PB_Spin_Numeric)
    GadgetToolTip(#Gadget_SizeMesh,"Size of the Mesh")
    SetGadgetState(#Gadget_SizeMesh,camera\SizeMesh)   

   
    CloseGadgetList()
  EndIf
  ;}
  ;{ open a screen
  ScreenWidth  = ScreenX - PanelParameter - PanelTexture -30
  ScreenHeight = ScreenY - MenuHeight() - StatusBarHeight(#statusbar)-TopSpace-BottomSpace
  If OpenWindowedScreen(WindowID(#WindowMain),PanelParameter+15, TopSpace, ScreenWidth, ScreenHeight, 0, 0, 0)=0
    Error("Unable To open a Screen")
  EndIf   
  ;} 
   
  ;{ others things
  ShowCursor_(1) ; window only
  ;}
EndIf


  ;{ engine 3D - world, camera.
  ;{ world
  AmbientColor(RGB(80,80,80))
  ;}.
  ;{ camera
  CreateCamera(#Camera, 0, 0, 100, 100)
  CameraLocate(#Camera, 70, 100, 230)
  RotateCamera(#Camera, -15, 15, -100)
  CameraLookAt(#camera,0,0,0)
  CameraBackColor(#Camera, RGB(125,125,125))
  ;}
  ;{ entity to test the shader/material
  LoadTexture(#Texture,"PERLREFL.JPG")     
  CreateMaterial(#material,TextureID(#texture))
  ChangeObject()
  ;}
  ;{ light
  CreateLight(#light1,RGB(255,255,255),50,0,0)
  LightSpecularColor(#light1,RGB(255,255,255))
  ;}
  ;}
;}

;{ loop
Repeat
  quit = Screen3DEvents()
  ;{ keyboard
  EventKeyboard()
  If KeyboardReleased(#PB_Any)
    MouseX=0
    MouseY=0
    KeyX = 0
    KeyZ = 0
    KeyY = 0
  EndIf
  If KeyboardPushed(#PB_Key_Right)
    RotateEntity(#entity,0,1,0,#PB_Relative)
  EndIf
  If KeyboardPushed(#PB_Key_Left)
    RotateEntity(#entity,0,-1,0,#PB_Relative)
  EndIf
  If KeyboardPushed(#PB_Key_Up)
    RotateEntity(#entity,0,0,1,#PB_Relative)
  EndIf
  If KeyboardPushed(#PB_Key_Down)
    RotateEntity(#entity,0,0,-1,#PB_Relative)
  EndIf
  ;}
  ;{ mouse
  If ExamineMouse()
    If Not KeyboardPushed(#PB_Key_LeftShift) ;And KeyboardPushed(#PB_Key_LeftAlt))
      If KeyboardPushed(#PB_Key_LeftAlt)
        If MouseButton(#PB_MouseButton_Left)                             
          MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
          MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
        Else                 
          MouseX = 0
          MouseY = 0               
        EndIf
        KeyZ = -MouseWheel()*#CameraSpeed * camera\ViewZoom
      EndIf
      KeyZ = -MouseWheel()*#CameraSpeed * camera\ViewZoom
    Else
      If MouseButton(#PB_MouseButton_Left)
        KeyY =  MouseDeltaY() * #CameraSpeed * 0.4
        KeyX = -MouseDeltaX() * #CameraSpeed * 0.4                           
      Else
        KeyY = 0
        KeyX = 0
      EndIf
      KeyZ = -MouseWheel()*#CameraSpeed * camera\ViewZoom
    EndIf
  EndIf 
  ;}
 
  ;{ update the scene
  
  If camera\lookat=1 And IsEntity(#entity)
    MoveCamera  (#Camera, KeyX, KeyY, KeyZ)
    CameraLookAt(#Camera,EntityX(#entity),EntityY(#entity),EntityZ(#entity))
  Else
    RotateCamera(#Camera, MouseY, MouseX, 0,#PB_Relative)
    MoveCamera  (#Camera, KeyX, KeyY, KeyZ)
  EndIf

  RenderWorld()     
  FlipBuffers()
  ;}
  GestionMouse()
Until quit = 1
;}

;{ procedures
Procedure Error(message$) 
MessageRequester("Error",message$,1)
End
EndProcedure

;{ keyboard

Procedure EventKeyboard()
  ExamineKeyboard()
  If KeyboardPushed(#PB_Key_Escape)
    End
  EndIf 
EndProcedure

;}

;{ mouse

Procedure GestionMouse()
  If inscreen = 1
    If (MouseX()<2 XOr MouseX()>(ScreenWidth-14)) Or (MouseY()>ScreenHeight-4 XOr MouseY()<1+TopSpace)
      inscreen = 0 ; on n'est plus dans l'écran
      ReleaseMouse(1); on libère la souris pour les menus
    EndIf     
  Else
    mx = WindowMouseX(0)-PanelParameter-10 : my = WindowMouseY(0)-TopSpace-3
    If (mx>PanelParameter+10 And mx <ScreenWidth-14 And my>3+TopSpace  And my<ScreenHeight-4)
      ReleaseMouse(0)   ; on est dans la vue 3D   
      MouseLocate(mx,my)
    EndIf   
    inscreen = 1   
  EndIf
  StatusBarText(#StatusBar,1, Str(WindowMouseX(0))+"/"+Str(WindowMouseY(0))+" - "+Str(MouseX())+"/"+Str(MouseY()))
  StatusBarText(#StatusBar,2, "Triangles : "+Str(CountRenderedTriangles()))
EndProcedure
;}

;{ 3D world

Procedure ChangeObject(mode=0)
FreeMesh(#MeshSphere)
FreeEntity(#Entity)
Select mode
    Case 0     
      CreateSphere(#MeshSphere,10,32,32)
      
      CreateEntity(#Entity,MeshID(#MeshSphere),#PB_Material_None)
      ScaleEntity(#entity,3,3,3)
      EntityLocate(#Entity,0,0,0)
     
    Case 1
      CreateCube(#MeshSphere,15) 
      CreateEntity(#Entity,MeshID(#MeshSphere),#PB_Material_None)
      ScaleEntity(#entity,3,3,3)
      EntityLocate(#Entity,0,0,0)
     
    Case 2
      CreatePlane(#MeshSphere,10,10,10,10,1,1) 
      CreateEntity(#Entity,MeshID(#MeshSphere),#PB_Material_None)
      ScaleEntity(#entity,8,8,8)
      RotateEntity(#entity,90,0,0)
      EntityLocate(#Entity,0,0,0)
     
    Case 3 ; suzanne
      LoadMesh(#MeshSphere,"Suzanne.mesh")
      CreateEntity(#Entity,MeshID(#MeshSphere),#PB_Material_None)
      ScaleEntity(#entity,30,30,30)
      EntityLocate(#Entity,0,0,0)
     
    Case 4 ; our object
      mesh$=OpenFileRequester("Open Your Mesh","","*.mesh",0)
      If mesh$ <>"" And GetExtensionPart(mesh$)="mesh"
         mesh$=GetFilePart(mesh$)
        If LoadMesh(#MeshSphere,mesh$)
          CreateEntity(#Entity,MeshID(#MeshSphere),#PB_Material_None)
          ScaleEntity(#entity,camera\SizeMesh,camera\SizeMesh,camera\SizeMesh)
          EntityLocate(#Entity,0,0,0)
        Else
          MessageRequester("Error","Your File must to be a valid *.mesh.")
        EndIf
      EndIf
     
  EndSelect 
EndProcedure

Procedure MaterialLoad()
;   Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
;   Add3DArchive("Data/Material", #PB_3DArchive_FileSystem)
;   Parse3DScripts()
  mat$=OpenFileRequester("Get a Material","","*.material",0)
  If mat$ <>"" And GetExtensionPart(mat$)="material"
    mat$=RemoveString(GetFilePart(mat$),".material")
    GetScriptMaterial(#material,mat$)
    SetEntityMaterial(#Entity,MaterialID(#material))
  Else   
    MessageRequester("Error","Please, select a valid *.material")
  EndIf
EndProcedure

;}

Procedure.a Screen3DEvents()
  Repeat
    Event = WindowEvent()
   
    Select Event
       
      Case #PB_Event_Menu
        Select EventMenu()
           
          Case 301 ; load object
            camera\typeObj = 4
            ChangeObject(4)
           
          Case 302 ; cube
            camera\typeObj = 1
            ChangeObject(1)
           
          Case 303 ; plane
            camera\typeObj = 2
            ChangeObject(2)
           
          Case 304 ; sphere
            camera\typeObj = 0
            ChangeObject(0)
           
          Case 305 ; suzanne blender
            camera\typeObj = 3
            ChangeObject(3)
           
        EndSelect
       
      Case #PB_Event_Gadget
        Select EventGadget() 
            ;{ panel left
          Case #MaterialLoad
            MaterialLoad()
            ;}
           
          Case #cameraLookAt
            camera\lookat = 1-camera\lookat
           
          Case #Gadget_ViewZoom           
            camera\ViewZoom = GetGadgetState(#Gadget_ViewZoom)
           
          Case #Gadget_SizeMesh
            camera\SizeMesh = GetGadgetState(#Gadget_SizeMesh)           
            ResizeEntity(#entity,camera\SizeMesh,camera\SizeMesh,camera\SizeMesh)
           
        EndSelect
       
      Case #PB_Event_CloseWindow
        Quit = 1 
       
    EndSelect
   
If Quit = 1 : ProcedureReturn Quit : EndIf  ; Quit the app immediately
  Until Event = 0
         
EndProcedure
;}
Il faudra créer un répertoire : data\texture, dans lequel vous devez mettre une texture à vous, et mettre le nom ici :

Code : Tout sélectionner

  ;{ entity to test the shader/material
  LoadTexture(#Texture,"PERLREFL.JPG")  ; -> changer le nom avec votre image ici.    
  CreateMaterial(#material,TextureID(#texture))


EDIT :
il faut dans les options du compilateur :
- menu compilateur
- option du compilateur
- cocher #pb_compile_count
Dernière modification par blendman le lun. 30/avr./2012 21:52, modifié 3 fois.
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: GetScriptMaterial() et mise à jour du material

Message par SPH »

erreur ligne 73 : constante introuvable

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: GetScriptMaterial() et mise à jour du material

Message par blendman »

SPH a écrit :erreur ligne 73 : constante introuvable
j'ai oublié de préciser, mais je pensais que c'était connu : il faut activer la constante de compilateur :
- menu compilateur
- option du compilateur
- cocher #pb_compile_count

;)
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: GetScriptMaterial() et mise à jour du material

Message par comtois »

Ce n'est pas possible pour l'instant de recharger un script material.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: GetScriptMaterial() et mise à jour du material

Message par blendman »

comtois a écrit :Ce n'est pas possible pour l'instant de recharger un script material.
dommage, mon material/shader editor ne va pas être faisable alors.

C'est prévu que ça soit possible par la suite (c'est sur la todo -liste par exemple) :D ?
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: GetScriptMaterial() et mise à jour du material

Message par comtois »

Je sais bien que ce n'est pas ce que tu voulais faire, mais voici un petit utilitaire sympa qui permet d'écrire ses scripts, il facilite la saisie avec :
- L'autocomplétion des paramètres possibles (et propose une liste des paramètres).
- L'indentation
- la couleur du texte
- Un sélecteur de couleur s'affiche quand le paramètre le nécessite.

Image

Télécharger :
http://veniogames.com/downloads/Yaose

Vu ici :
http://www.ogre3d.org/forums/viewtopic.php?f=5&t=46787
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: GetScriptMaterial() et mise à jour du material

Message par blendman »

salut

Merci pour le lien.
En fait, j'avais déjà trouvé un material editor pour Ogre qui fonctionne pas mal (http://www.ogre3d.org/tikiwiki/Material ... evelopment)

Le seul problème c'est que les materials en Cg doivent ensuite être retravaillés pour purebasic ;).
Donc, j'espérai pouvoir faire un material editor permettant de concevoir des material directement pour purebasic, en voyant immédiatement le résultat (comme celui pour ogre, mais dédié à pure) ;).

pour le moment, je dois tout recharger à chaque fois (reloader le jeu ou mon éditeur de map) pour voir la différence, et c'est un peu long du coup pour changer des paramètres de vertex shaders/program shader ^^. Mais ça reste faisable, donc, je fais ça pour le moment :D.

Mais bon, je retravaillerai sur cet éditeur de shader, lorsque l'on pourra recharger un material, ce n'est pas très grave. La priorité en 3D, c'est d'ajouter des fonctions utiles pourla création d'un jeu en lui-même. Et avec la 4.6, on a eu beaucoup de nouvelles fonctions (dont pas mal que tu attendais je pense ;)) et on peut commencer à penser sérieusement à réaliser un jeu indi commercial avec purebasic (en tout cas, j'y réfléchis de mon coté).

PS : tu as testé mon éditeur de level au fait ?
je vais bientôt poster une nouvelle version qui commence à être sympathique.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: GetScriptMaterial() et mise à jour du material

Message par comtois »

blendman a écrit :salut

Merci pour le lien.
En fait, j'avais déjà trouvé un material editor pour Ogre qui fonctionne pas mal (http://www.ogre3d.org/tikiwiki/Material ... evelopment)
Tu as compilé le source ou tu as trouvé un exécutable quelque part ? J'aimerais bien y jeter un oeil mais je n'ai pas trouvé de truc à installer !
PS : tu as testé mon éditeur de level au fait ?
La première version, je laisse passer quelques versions, avant de tester à nouveau :)
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: GetScriptMaterial() et mise à jour du material

Message par blendman »

comtois a écrit :Tu as compilé le source ou tu as trouvé un exécutable quelque part ? J'aimerais bien y jeter un oeil mais je n'ai pas trouvé de truc à installer !
ici, sur le forum, il ya un lien (au tout début) :
http://www.ogre3d.org/forums/viewtopic.php?f=11&t=48774
PS : tu as testé mon éditeur de level au fait ?
La première version, je laisse passer quelques versions, avant de tester à nouveau :)
tu as bien raison, et ça commence à être fort sympathique sur les dernières versions :D
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: GetScriptMaterial() et mise à jour du material

Message par kelebrindae »

blendman a écrit :dommage, mon material/shader editor ne va pas être faisable alors.
Quoique... 8)
Essaye-ça et dis-moi ce que tu en penses; je ferai un post plus tard pour donner le source.
http://keleb.free.fr/codecorner/downloa ... Editor.exe
(c'est pour Windows 32bits, il faut ajouter le "Engine3D.dll" de PB 4.61b1)

Touches:
- curseur + pageup pagedown pour manipuler la preview
- Ctrl-R pour rafraîchir la preview en fonction des modifs apportées dans les éditeurs
(c'est fait à la va-vite, donc il reste des bugs de-ci de-là; mais bon, c'est juste pour tester l'idée)

Image
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: GetScriptMaterial() et mise à jour du material

Message par blendman »

salut

ça a l'air très intéressant, le problème c'est que je ne vois pas de changement en temps réel ;).
Autre chose, on perd tout son travail lorsqu'on ferme ton éditeur, c'est un peu bête ^^.

Mais sinon, ça a l'air vraiment intéressant c'est clair ;).
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: GetScriptMaterial() et mise à jour du material

Message par kelebrindae »

blendman a écrit : je ne vois pas de changement en temps réel
Tu as essayé de faire un Ctrl-R? [EDIT]Par ailleurs, tout ce qu'il y a dans le cadre "preview parameters" a des effets immédiats.
blendman a écrit :on perd tout son travail lorsqu'on ferme ton éditeur
Bâh non, normalement tu as un message qui te demande si tu veux sauvegarder. Et puis dans le menu aussi, tu peux sauvegarder/recharger... :?
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: GetScriptMaterial() et mise à jour du material

Message par blendman »

kelebrindae a écrit :
blendman a écrit : je ne vois pas de changement en temps réel
Tu as essayé de faire un Ctrl-R? [EDIT]Par ailleurs, tout ce qu'il y a dans le cadre "preview parameters" a des effets immédiats.
Ah oui, ok, ctrl-R. Ca fonctionne pas mal comme ça, moi, j'imaginais un truc avec des trackbarr, tout ça ^^, mais disons que là, ça marche.
Par contre, tu aurais d'autres exemples fonctionnels ?
Ce qui serait top c'est un éditeur comme ça, avec des presets de plusieurs types : réflexion, speculaire, nomalmap, refraction, fresnel, bump, shadowmap (est-ce possible d'ailleurs ? :D), etc..

Et il faudrait le donner à Fred pour qu'il l'intègre avec purebasic, qu'en dis-tu ? car ce genre d'outils manque très sérieusement au purebasic. ceux qui testent le langage ne trouvent aucun shader et peuvent penser qu'on ne peut rien faire en pure de ce coté-là, c'est quand même balot ^^.

Sinon, tu devrais tester avec les différents types de shadows : noshadow, modulative, additive ;).
Car j'ai testé des ahders qui ne marchent que s'il n'y a pas de shadow, c'est dommage.
blendman a écrit :on perd tout son travail lorsqu'on ferme ton éditeur
Bâh non, normalement tu as un message qui te demande si tu veux sauvegarder. Et puis dans le menu aussi, tu peux sauvegarder/recharger... :?
ah oui, ok, je n'avais pas compris que c'était comme ça, je croyais que ça sauvegardait tout dans les dossiers material, shaders, textures, etc..
C'est vrai qu'on peut sauvegarder et c'est du coup assez pratique ;).

j'ai plein de fichier .fx, on peut en faire quelque chose ou non (des trucs venant de dbpro ou d'autres soft de création de jeu 3D) ?
kelebrindae
Messages : 579
Inscription : ven. 11/mai/2007 15:21

Re: GetScriptMaterial() et mise à jour du material

Message par kelebrindae »

blendman a écrit :tu aurais d'autres exemples fonctionnels ?
J'ai les deux-trois postés dans la section 3D:
http://www.purebasic.fr/french/viewtopi ... 13&t=11418
http://www.purebasic.fr/french/viewtopi ... 13&t=11400
http://www.purebasic.fr/french/viewtopi ... 13&t=10358
http://www.purebasic.fr/french/viewtopi ... 13&t=10640
Et les ".material" de G-rom (sans shaders) dans le répertoire "examples/3D" de PB sont plutôt jolis aussi.
Tu peux aussi importer les tiens avec les petits boutons au-dessus de chaque éditeur.
blendman a écrit :j'ai plein de fichier .fx, on peut en faire quelque chose ou non
En théorie, oui: au prix de quelques adaptations, on peut faire fonctionner un shader de DBpro ou autre (c'est ce que j'ai fait avec le shader "normalMap" ci-dessus, 3ème lien); mon éditeur est censé rendre la tâche plus facile, d'ailleurs... Mais comme je ne connais rien aux shaders, je galère à chaque fois et je ne pourrai guère t'aider.
blendman a écrit :Et il faudrait le donner à Fred pour qu'il l'intègre avec purebasic, qu'en dis-tu ?
Je posterai sous peu tout le source dans un thread dédié; le principal intéressé en fera ce qu'il veut :wink: .
Les idées sont le souvenir de choses qui ne se sont pas encore produites.
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: GetScriptMaterial() et mise à jour du material

Message par blendman »

kelebrindae a écrit :
blendman a écrit :tu aurais d'autres exemples fonctionnels ?
J'ai les deux-trois postés dans la section 3D:
http://www.purebasic.fr/french/viewtopi ... 13&t=11418
http://www.purebasic.fr/french/viewtopi ... 13&t=11400
http://www.purebasic.fr/french/viewtopi ... 13&t=10358
http://www.purebasic.fr/french/viewtopi ... 13&t=10640
Et les ".material" de G-rom (sans shaders) dans le répertoire "examples/3D" de PB sont plutôt jolis aussi.
Tu peux aussi importer les tiens avec les petits boutons au-dessus de chaque éditeur.
J'ai essayé d'importer ceux de G-rom, mais aucun ne marche.
Je ne sais pas comment il faut s'il faut changer des choses (j'ai mis les textures où il faut, je les ai importé, mais ça ne donne rien non plus).

Et sur ton screenshot, l'espèce de shaders en displace, tu ne l'as pas ?
Et tes shaders de réfraction/réflexion, ils ne marchent pas ?
blendman a écrit :j'ai plein de fichier .fx, on peut en faire quelque chose ou non
En théorie, oui: au prix de quelques adaptations, on peut faire fonctionner un shader de DBpro ou autre (c'est ce que j'ai fait avec le shader "normalMap" ci-dessus, 3ème lien); mon éditeur est censé rendre la tâche plus facile, d'ailleurs... Mais comme je ne connais rien aux shaders, je galère à chaque fois et je ne pourrai guère t'aider.
argh, moi non plus, je n'y connais rien :(.
J'espère que d'autres utilisateurs testeront les shaders avec ton utilitaire et feront des trucs sympa, faudra le poster sur le forum Anglais ;).
blendman a écrit :Et il faudrait le donner à Fred pour qu'il l'intègre avec purebasic, qu'en dis-tu ?
Je posterai sous peu tout le source dans un thread dédié; le principal intéressé en fera ce qu'il veut :wink: .
Ce serait bien que ce genre d'outil et d'exemples soient intégrés de base avec purebasic, histoire de montrer ce qu'il a sous le pied ^^.
Répondre