innerhalb einer Sphere (3D)

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
swissgregi
Beiträge: 16
Registriert: 31.01.2011 12:23

innerhalb einer Sphere (3D)

Beitrag von swissgregi »

Hallo

Ich habe ein Material einem Sphere zugewiesen.
Nun sehe ich das Material nicht mehr, sobald sich die Kamera innerhalb der Sphere befindet.

Kann man das irgenwie beeinflussen, so dass ich eine Textur auch dann sehe, wenn sich die Kamera innerhalb des Sphere's befindet?
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: innerhalb einer Sphere (3D)

Beitrag von WPö »

Moin!

Es wäre uns eine Hilfe, stelltest Du Deinen Quelltext ein, damit wir uns überhaupt sinnvoll damit befassen können.

Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
swissgregi
Beiträge: 16
Registriert: 31.01.2011 12:23

Re: innerhalb einer Sphere (3D)

Beitrag von swissgregi »

Code: Alles auswählen

;
; ------------------------------------------------------------
;
;   PureBasic - Mesh (Skeleton Animation)
;
;    (c) 2002 - Fantaisie Software
;
; ------------------------------------------------------------
;

IncludeFile "Screen3DRequester.pb"

Define.f KeyX, KeyY, MouseX, MouseY

#PanoMesh    = 0
#PanoTexture = 0
#Pano        = 0
  
If InitEngine3D()

  Add3DArchive("Data/Textures", #PB_3DArchive_FileSystem)
   
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()
    
    LoadTexture(#PanoTexture, "darlux.jpg")
    
    CreateMaterial(0, TextureID(#PanoTexture))
    
    CreateSphere(#PanoMesh,50,90,90)
    
    CreateEntity(#Pano, MeshID(#PanoMesh), MaterialID(0))
    SetEntityMaterial(#Pano, MaterialID(0))
    
    DisableMaterialLighting(0, 1)
    
    CreateCamera(0, 0, 0, 100, 100)
    CameraLocate(0, 0, 40, 150)
    CameraBackColor(0, RGB(0, 0, 128))
      
    Repeat
      Screen3DEvents()
              
      If ExamineKeyboard()
      
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -1
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = 1
        Else
          KeyX = 0
        EndIf
        
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -1
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = 1
        Else
          KeyY = 0
        EndIf
        
        If KeyboardPushed(#PB_Key_PageUp)
          RollZ = 3
        Else
          RollZ = 0
        EndIf
        
        
      EndIf
      
      If ExamineMouse()
        MouseX = -MouseDeltaX()/10 
        MouseY = -MouseDeltaY()/10
      EndIf
      
      RotateEntity(#Pano, 0, 0.5, 0, #PB_Relative)
      
      RotateCamera(0, MouseY, MouseX, RollZ, #PB_Relative)
      MoveCamera  (0, KeyX, 0, KeyY)
      
      RenderWorld()
      Screen3DStats()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
    
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
  
End
Beispielgrafiken findet man hier genug: https://www.google.ch/search?hl=de&safe ... 80&bih=892

Das ganze möchte ich für die Darstellung von Panoramen verwenden.
Dazu könnte ich die "SkyBox" verwenden. Dann kann ich aber das Panorama später nicht zu einem anderen Panorama überblenden.
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: innerhalb einer Sphere (3D)

Beitrag von WPö »

Bedaure, "d3dx9_42.dll wurde nicht gefunden". Mit 3D mache ich sowieso nichts. DirectX ist längst auf meinem System. Deshalb weiß ich nicht recht, was da schon wieder angemeckert wird. Vielleicht kann Dir sonst jemand helfen.

Übrigens ändere mal die Zeile 11 in

Code: Alles auswählen

IncludeFile "D:\Programme\PureBasic\Examples\Sources\Screen3DRequester.pb"
o.ä., denn nicht jeder wird sofort diese Bibliotheken in den Beispielen finden.

Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: innerhalb einer Sphere (3D)

Beitrag von ts-soft »

Zeile 11 lieber in:

Code: Alles auswählen

IncludeFile #PB_Compiler_Home + "Examples\Sources\Screen3DRequester.pb"
dann klappt es auch mit dem Nachbarn :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
WPö
Moderator
Beiträge: 669
Registriert: 27.05.2008 12:44
Wohnort: Oberland
Kontaktdaten:

Re: innerhalb einer Sphere (3D)

Beitrag von WPö »

ts-soft hat geschrieben:Zeile 11 lieber in:

Code: Alles auswählen

IncludeFile #PB_Compiler_Home + "Examples\Sources\Screen3DRequester.pb"
dann klappt es auch mit dem Nachbarn :wink:
Danke, Thomas. War nur zu faul, die Konstante 'rauszusuchen.

Gruß - WPö
Ich glaube nur der Statistik, die ich selbst gefälscht habe!
Meine Netzpräsenz: WPö.de
PB5.31 auf LMDE und Pentium T7200 2,00GHz, 4GB DDR2, ATI X1400.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: innerhalb einer Sphere (3D)

Beitrag von ts-soft »

WPö hat geschrieben:Danke, Thomas. War nur zu faul, die Konstante 'rauszusuchen.
Braucht man doch gar nicht :wink:
Das es eine Compilerdirektive ist weiß man ja, also #PB_COMPILER_ tippen und gucken was Autocomplete so anbietet :)

Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Schobaer
Beiträge: 21
Registriert: 25.07.2009 10:41
Wohnort: Berge

Re: innerhalb einer Sphere (3D)

Beitrag von Schobaer »

Moin,
die DLL meckert PB an, weil es keine Directx10 kann. Üblicherweise alle Win7. Die DLL aus dem Internet ziehen und in den Ordner mit dem PB-Code packen. Dann läuft es.
Gruß, Schobaer
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: innerhalb einer Sphere (3D)

Beitrag von ts-soft »

DirectX 9 c installieren, per WebInstaller bei Microsoft. Benötigt fast jedes Spiel, ist also auf fast jedem Win7 System vorhanden,
wird aber nicht autom. mit dem OS installiert.

/edit
Hier der Download:
http://www.microsoft.com/downloads/de-d ... 6652cd92a3

Diese DLL wird nicht einzeln von MS angeboten und sollte auch niemals aus irgendwelchen dubiosen Quellen installiert werden!
Es ist kein Problem, DirectX 9, 10 und 11 gleichzeitig auf dem System zu haben!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
FosJonas
Beiträge: 121
Registriert: 12.11.2008 19:31

Re: innerhalb einer Sphere (3D)

Beitrag von FosJonas »

Das Problem ist das Faces immer nur in eine Richtung "schauen" also nur von einer Seite Sichtbar ist, um diese in beide Seiten Sichtbar zu machen muss man, zumindest in Purebasic, 2 Faces, also für jede Sichtrichtung eine, erstellen.
Da es von Purebasic aus keinen befehl gibt um die Faces zu flippen wäre es wohl am einfachsten mit einem Programm wie Blender einfach eine Kugel zu erstellen in der die Faces von Haus aus geflippt (Da gibts nen Befehl der heißt FlipFaces) sind und dann einfach in Purebasic als Kugel zu laden.
Purebasic 5.10 | Kubuntu 12.04 (64 bit) | Opera 12.01 | Nvidia GT 9800
Xubuntu 12.04 (64 bit) | Intel HD Graphis (Onboard)
Antworten