StreetView Grabber (Updated v1.6)

Applications, Games, Tools, User libs and useful stuff coded in PureBasic
Olby
Enthusiast
Enthusiast
Posts: 461
Joined: Mon Jan 12, 2009 10:33 am
Contact:

Re: StreetView Grabber (Updated v1.6)

Post by Olby »

@manuel7 - Thanks. I glanced over the code and it looks as it could be easily translated to PB, however I don't have much time these days (last year of uni). It has landed on my ToDo list, at least for now.
  • ; TODO: Add support for exe parameters to open an existing pano by drag and drop
    ; TODO: Add a checkbox to render the pano as a 6 sided cube map
    ; TODO: Depth map rendering
Intel Core i7 Quad 2.3 Ghz, 8GB RAM, GeForce GT 630M 2GB, Windows 10 (x64)
Ftor
New User
New User
Posts: 6
Joined: Wed Apr 22, 2015 12:58 am

Re: StreetView Grabber (Updated v1.6)

Post by Ftor »

Too bad the source code isn't available.
It would be useful to be sure that this software is free from any malware.
Ftor
New User
New User
Posts: 6
Joined: Wed Apr 22, 2015 12:58 am

Re: StreetView Grabber (Updated v1.6)

Post by Ftor »

Still no evidence that it's free from malware. I have to use virtual machine for this useful software.
Is there any way to use this software with Ubuntu?
Ftor
New User
New User
Posts: 6
Joined: Wed Apr 22, 2015 12:58 am

Re: StreetView Grabber (Updated v1.6)

Post by Ftor »

Olby, thank you anyway for your utility.
Unfortunately, Google Street View panoramas don't remain in the same quality in which you find them. Every house which is unblurred now can become blurred. The opposite conversion doesn't occur. So keeping private copy which doesn't degrade because of some nonsense requests is a good idea.
Hi-Toro
Enthusiast
Enthusiast
Posts: 265
Joined: Sat Apr 26, 2003 3:23 pm

Re: StreetView Grabber (Updated v1.6)

Post by Hi-Toro »

I saw this ages ago but was too lazy to try it -- it's awesome!

Would it be possible to allow looking up and down, like in Streetview itself?

Any chance of the source code being released?
James Boyd
http://www.hi-toro.com/
Death to the Pixies!
Olby
Enthusiast
Enthusiast
Posts: 461
Joined: Mon Jan 12, 2009 10:33 am
Contact:

Re: StreetView Grabber (Updated v1.6)

Post by Olby »

Yes, photo spheres and other special cases of street view are currently not supported. I have a fix in mind but I just don't have any time to do it right now.
Intel Core i7 Quad 2.3 Ghz, 8GB RAM, GeForce GT 630M 2GB, Windows 10 (x64)
Mesa
Enthusiast
Enthusiast
Posts: 345
Joined: Fri Feb 24, 2012 10:19 am

Re: StreetView Grabber (Updated v1.6)

Post by Mesa »

Hi, for information, i've got the same probleme as puresat, some pictures are gray + the previewer crashs, both of them only with the quality at 6 (max).

It's a very very great soft !
Thanks.

M.
dige
Addict
Addict
Posts: 1247
Joined: Wed Apr 30, 2003 8:15 am
Location: Germany
Contact:

Re: StreetView Grabber (Updated v1.6)

Post by dige »

Hi Olby, would you be so kind and could show me, how do you load and view the panorama images?

I try to view my Insta360 images like this:
Image
"Daddy, I'll run faster, then it is not so far..."
Olby
Enthusiast
Enthusiast
Posts: 461
Joined: Mon Jan 12, 2009 10:33 am
Contact:

Re: StreetView Grabber (Updated v1.6)

Post by Olby »

Hey,

For those of you who want to view standalone panorama images here's the code. Tested on 5.41LTS+. Once compiled just drag and drop the panorama files over the executable to view them. Needs Engine3D.dll in the same folder. Enjoy!

Code: Select all

EnableExplicit

UseJPEGImageDecoder()
UsePNGImageDecoder()

Define.i w,h,d,mx.f,my.f,file$=Trim(ProgramParameter(0))

If file$
	If InitEngine3D() And
	   InitSprite() And
	   InitKeyboard() And
	   InitMouse()
	
		If ExamineScreenModes()
			While NextScreenMode()
				w=ScreenModeWidth()
				h=ScreenModeHeight()
				d=ScreenModeDepth()
			Wend
			
			If OpenScreen(w,h,d,"Panorama",#PB_Screen_SmartSynchronization)
				CreateCamera(0,0,0,100,100)
				CameraFOV(0,90)
				
				Add3DArchive(GetPathPart(file$),#PB_3DArchive_FileSystem)
				CreateMaterial(0,LoadTexture(0,file$))
				DisableMaterialLighting(0,#True)
				MaterialFilteringMode(0,#PB_Material_Trilinear)
				RotateMaterial(0,180,#PB_Material_Fixed)
				
				CreateSphere(0,-10,32,32)
				CreateEntity(0,MeshID(0),MaterialID(0))
				
				Repeat
					If ExamineMouse()
						mx=-MouseDeltaX()/4.0
						my=-MouseDeltaY()/4.0
					EndIf
					RotateCamera(0,my,mx,0,#PB_Relative)
					RenderWorld()
					FlipBuffers()
					ExamineKeyboard()
			  Until KeyboardPushed(#PB_Key_Escape)
		  EndIf
		EndIf
	EndIf
EndIf
Intel Core i7 Quad 2.3 Ghz, 8GB RAM, GeForce GT 630M 2GB, Windows 10 (x64)
dige
Addict
Addict
Posts: 1247
Joined: Wed Apr 30, 2003 8:15 am
Location: Germany
Contact:

Re: StreetView Grabber (Updated v1.6)

Post by dige »

Yeah!!! Great :D Thank you Olby!
"Daddy, I'll run faster, then it is not so far..."
dige
Addict
Addict
Posts: 1247
Joined: Wed Apr 30, 2003 8:15 am
Location: Germany
Contact:

Re: StreetView Grabber (Updated v1.6)

Post by dige »

I've changed some little things, to use it several times.

But there must be something wrong. I'll always get an IMA after two times OpenScreen().

Anybody can help?

Code: Select all

EnableExplicit

UseJPEGImageDecoder()
UsePNGImageDecoder()

Define.i w,h,d,mx.f,my.f,file$=Trim(ProgramParameter(0))

If InitEngine3D() And
  InitSprite() And
  InitKeyboard() And
  InitMouse()
   
  If ExamineScreenModes()
    While NextScreenMode()
      w=ScreenModeWidth()
      h=ScreenModeHeight()
      d=ScreenModeDepth()
    Wend
  EndIf
EndIf      

Repeat
  
If w <> 0 And (file$ = "" Or file$ = "#")
  file$ = OpenFileRequester( "Select Image", "", "Image (*.jpg)|*.jpg;*.jpeg;*.png;*.bmp|Alle Dateien (*.*)|*.*", 0)
EndIf

If file$
   If OpenScreen(w,h,d,"Panorama",#PB_Screen_SmartSynchronization)
      If CreateCamera(0,0,0,100,100)
        CameraFOV(0,90)
        
        Add3DArchive(GetPathPart(file$),#PB_3DArchive_FileSystem)
        If CreateMaterial(0,LoadTexture(0,file$))
          DisableMaterialLighting(0,#True)
          MaterialFilteringMode(0,#PB_Material_Trilinear)
          RotateMaterial(0,180,#PB_Material_Fixed)

          If CreateSphere(0, -10, 32, 32)

            If CreateEntity(0,MeshID(0),MaterialID(0))
            
              Repeat
                 If ExamineMouse()
                    mx=-MouseDeltaX()/4.0
                    my=-MouseDeltaY()/4.0
                 EndIf
                  
                 RotateCamera(0,my,mx,0,#PB_Relative)
                 RenderWorld()
                 FlipBuffers()
                 ExamineKeyboard()
               Until KeyboardPushed(#PB_Key_Escape)
               
               FreeEntity(0)
             EndIf
             FreeMesh(0)
           EndIf
           
           FreeTexture(0)
           FreeMaterial(0)
         EndIf
         FreeCamera(0)
       EndIf
       CloseScreen()
       file$ = "#"
    EndIf
 EndIf
 Until file$ = "" 
"Daddy, I'll run faster, then it is not so far..."
Olby
Enthusiast
Enthusiast
Posts: 461
Joined: Mon Jan 12, 2009 10:33 am
Contact:

Re: StreetView Grabber (Updated v1.6)

Post by Olby »

Hey dige,

Hmmm I don't see anything obvious. Try posting this in the 3D programming, they might know why it does IMA.

Thanks.
Intel Core i7 Quad 2.3 Ghz, 8GB RAM, GeForce GT 630M 2GB, Windows 10 (x64)
Mesa
Enthusiast
Enthusiast
Posts: 345
Joined: Fri Feb 24, 2012 10:19 am

Re: StreetView Grabber (Updated v1.6)

Post by Mesa »

I've try to add a zoom function but i have an auto rotation around the Z axis, is it a bug ?

And there is a limitation about the texture size, do you know a work around to avoid that ?

Code: Select all

EnableExplicit

UseJPEGImageDecoder()
UsePNGImageDecoder()

UseTGAImageDecoder()


Define.i w,h,d,MouseX.f,MouseY.f,file$=Trim(ProgramParameter(0)),Engine3Ddll$,ok,ev
Define.i tick, LB, RB

Engine3Ddll$=GetCurrentDirectory() + "Engine3D.dll"
If FileSize(Engine3Ddll$) = -1
  Engine3Ddll$=#PB_Compiler_Home + "Compilers\Engine3D.dll"
ElseIf FileSize(Engine3Ddll$) = -1
  MessageRequester("Attention","Engine3D.dll is missing.",#PB_MessageRequester_Warning)
  End
EndIf



file$=OpenFileRequester("Open Picture 360",GetCurrentDirectory(),"*.*",0)

If file$
  
  ok=InitEngine3D(#PB_Engine3D_DebugLog,Engine3Ddll$)
  If ok=0
    Debug "Problem with 3D"
    MessageRequester("Attention","Problem with 3D.",#PB_MessageRequester_Warning)
    End
  EndIf
  
  ok=ok+InitSprite() 
  If ok=0
    Debug "Problem with sprites"
    MessageRequester("Attention","Problem with sprites.",#PB_MessageRequester_Warning)
    End
  EndIf
  ok=ok+InitKeyboard()
  If ok=0
    Debug "Problem with keyboard"
    MessageRequester("Attention","Problem with keyboard.",#PB_MessageRequester_Warning)
    End
  EndIf
  ok=ok+InitMouse()
  If ok=0
    Debug "Problem with mouse"
    MessageRequester("Attention","Problem with mouse.",#PB_MessageRequester_Warning)
    End
  EndIf
  
  If ok <> 0
    
    If ExamineDesktops()
      OpenWindow(0, 0, 0, DesktopWidth(0), DesktopHeight(0),"Panorama: Zoom = mousewheel or UP/DOWN, Rotation Z = Left Button/Rigth button",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
      
      
      If OpenWindowedScreen(WindowID(0),0,0,DesktopWidth(0), DesktopHeight(0),0,0,0,#PB_Screen_SmartSynchronization)
        CreateCamera(0,0,0,100,100)
        CameraFOV(0,90)
        
        Add3DArchive(GetPathPart(file$),#PB_3DArchive_FileSystem)
        
        ;TODO Problems with big texture
        CreateMaterial(0,LoadTexture(0,file$))
        DisableMaterialLighting(0,#True)
        MaterialFilteringMode(0,#PB_Material_Trilinear)
        RotateMaterial(0,180,#PB_Material_Fixed)
        
        CreateSphere(0,-10,32,32)
        CreateEntity(0,MeshID(0),MaterialID(0))
        
        ;-Node because there something wrong without node when we make a zoom
        CreateNode(0, 0, 0, 0)
        AttachNodeObject(0, CameraID(0))
        
        
        Repeat
          
          Repeat 
            ev = WindowEvent() 
          Until ev = 0
          
          
          If ExamineMouse()
            Mousex=-MouseDeltaX()/4.0
            Mousey=-MouseDeltaY()/4.0
            tick=MouseWheel()
            LB=MouseButton(#PB_MouseButton_Left)
            RB=MouseButton(#PB_MouseButton_Right)
            
            ;zoom with mouse
            If tick > 0               
              MoveCamera(0,0,0,-0.1, #PB_Relative)
            ElseIf tick < 0              
              MoveCamera(0,0,0,0.1, #PB_Relative)
            EndIf
            
            ;Debug CameraDirectionX(0,#PB_Absolute)
            
            ; To avoid auto rotation aound the Z axis: a BUG ?
            If LB <> 0
              RotateNode(0,0,0,-0.5, #PB_Relative)
            EndIf
            If RB <> 0
              RotateNode(0,0,0,0.5, #PB_Relative)
            EndIf
          EndIf
          
          
          If ExamineKeyboard()
            
            ; zoom with keyboard
            If KeyboardPushed(#PB_Key_Up)
              
              MoveCamera(0,0,0,-0.1, #PB_Relative)
              
              
            ElseIf KeyboardPushed(#PB_Key_Down)
              MoveCamera(0,0,0,0.1, #PB_Relative)
              
              
            EndIf
            
          EndIf
          RotateNode(0, MouseY, MouseX, 0, #PB_Relative)
          ;RotateEntity(0,  MouseY, MouseX, 0, #PB_Relative);
          ;RotateCamera(0,  MouseY, MouseX, 0, #PB_Relative)
          ;
          
          RenderWorld()
          FlipBuffers()
          
          
        Until KeyboardPushed(#PB_Key_Escape)
      EndIf
    EndIf
  EndIf
EndIf


Mesa.
Olby
Enthusiast
Enthusiast
Posts: 461
Joined: Mon Jan 12, 2009 10:33 am
Contact:

Re: StreetView Grabber (Updated v1.6)

Post by Olby »

TropicalCyborg wrote:Is it possible to make it work from the web? I send the link and recieve the image in return?
No, not really. It's a desktop application and I don't have plans on converting it to a web service. I'm pretty sure someone else has done something similar, after all, street view extraction is a trivial process.
Intel Core i7 Quad 2.3 Ghz, 8GB RAM, GeForce GT 630M 2GB, Windows 10 (x64)
dige
Addict
Addict
Posts: 1247
Joined: Wed Apr 30, 2003 8:15 am
Location: Germany
Contact:

Re: StreetView Grabber (Updated v1.6)

Post by dige »

Zoom could also done with changing Camera FOV:

Code: Select all

Repeat
  If ExamineMouse()
    Mx=-MouseDeltaX()/4.0
    My=-MouseDeltaY()/4.0
    
    LB=MouseButton(#PB_MouseButton_Left)
    RB=MouseButton(#PB_MouseButton_Right)
    
    wheel = MouseWheel()
    If wheel <> 0
      fov + (wheel * 3)
      If fov < 3
        fov = 3
      EndIf
      
      If fov > 175
        fov = 175
      EndIf
      
      CameraFOV(0, fov)
    EndIf
    
    If LB <> 0
      RotateCamera(0,0,0,-0.5, #PB_Relative)
    EndIf
    If RB <> 0
      RotateCamera(0,0,0,0.5, #PB_Relative)
    EndIf
  EndIf
  
  If ExamineKeyboard()
    
    ; zoom with keyboard
    If KeyboardPushed(#PB_Key_Up)
      MoveCamera(0,0,0,-0.1, #PB_Relative)
      
    ElseIf KeyboardPushed(#PB_Key_Down)
      MoveCamera(0,0,0,0.1, #PB_Relative)
      
    ElseIf KeyboardPushed(#PB_Key_Left)
      MoveCamera(0,-0.1,0,0, #PB_Relative  )
      
    ElseIf KeyboardPushed(#PB_Key_Right)
      MoveCamera(0,0.1,0,0, #PB_Relative  )
      
    ElseIf KeyboardPushed(#PB_Key_PageUp)
      MoveCamera(0,0,0.1,0, #PB_Relative  )
      
    ElseIf KeyboardPushed(#PB_Key_PageDown)
      MoveCamera(0,0,-0.1,0, #PB_Relative  )
      
    EndIf
    
  EndIf
  
  ; RotateNode(0, My, Mx, 0, #PB_Relative)
  
  RotateCamera(0,My,Mx,0,#PB_Relative)
  
  RenderWorld()
  FlipBuffers()
  
  
Until KeyboardPushed(#PB_Key_Escape) Or WindowEvent() = #PB_Event_CloseWindow
"Daddy, I'll run faster, then it is not so far..."
Post Reply