sketchucation logo sketchucation
    • Login
    ℹ️ Licensed Extensions | FredoBatch, ElevationProfile, FredoSketch, LayOps, MatSim and Pic2Shape will require license from Sept 1st More Info

    Distace from Camera to object in drawing.

    Scheduled Pinned Locked Moved Developers' Forum
    44 Posts 14 Posters 38.6k Views 14 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • thomthomT Offline
      thomthom
      last edited by

      Ah - yes. That would be a good tool. And for my use, since I'd use V-Ray I'd want it to display the distance in inches as well as model units.

      Not sure if there's a tool like that out there though.

      Thomas Thomassen — SketchUp Monkey & Coding addict
      List of my plugins and link to the CookieWare fund

      1 Reply Last reply Reply Quote 0
      • TIGT Offline
        TIG Moderator
        last edited by

        Assuming that you have something selected then

        model=Sketchup.active_model
        eye=model.active_view.camera.eye
        ss=model.selection[0]
        distance=eye.distance(ss.bounds.center)
        

        returns the distance from the camera's 'eye' to the 'center' of the selection's bounding-box...
        You can of course improve this - another way to get the distance to the 'face' of a selection would be to get the vector between the 'eye' and the 'center' and then do a 'raytest' to find the first point hit and get that distance...

        model=Sketchup.active_model
        eye=model.active_view.camera.eye
        ss=model.selection[0]
        distance=(model.raytest[eye, eye.vector_to(ss.bounds.center)])[0].distance(eye)
        
        

        This then returns the 'distance'...
        You can improve it further by testing if the second item in the returned raytest array contains the selected object and if not redo the raytest from the first item [point] in its array along the same vector...

        model=Sketchup.active_model
        eye=model.active_view.camera.eye
        ss=model.selection[0]
        vector=eye.vector_to(ss.bounds.center)
        rayt=model.raytest[eye,vector]
        pt=rayt[0]
        while not rayt[1].include?(ss)
          rayt=model.raytest[pt,vector]
          pt=rayt[0]
        end#while
        pt=rayt[0]
        distance=eye.distance(pt)
        
        

        Hope this helps... 😕

        TIG

        1 Reply Last reply Reply Quote 0
        • Al HartA Offline
          Al Hart
          last edited by

          I took the utilitiestools.rb script in SketchUp, which displays an X,Y location as you move the mouse and changed it to display the distance from the camera instead.

          get_focal_length.jpg

          The heart of the change is this routine to display the camera distance:

          
          	# get camera distance from the eye to a point at (x,y,0)
          	def get_distance(target)
          		model = Sketchup.active_model
          		eye = model.active_view.camera.eye
          		distance = eye.distance(target)
          		# display in drawing units and inches
          		slength = Sketchup.format_length(distance) + sprintf(" (%g\")", distance)
          		return slength
          	end#def
          
          

          Try the attached script: get_camera_distance.rb

          [Edit: I uploaded a new version of get_camera_distance.rb]


          get_camera_distance.rb

          Al Hart

          http:wiki.renderplus.comimageseefRender_plus_colored30x30%29.PNG
          IRender nXt from Render Plus

          1 Reply Last reply Reply Quote 0
          • TIGT Offline
            TIG Moderator
            last edited by

            But that measures the eye to target distance...
            You want the eye to object distance ?
            The object might be between the target and the eye positions !
            See my example on how to use the eye>>>target vector and raytest from the eye along that vector for objects in between... perhaps using a selected object as the source [it needs work as it was only a first draft... but selecting a group/instance between the eye and target will give the distance to it ?]
            😕

            TIG

            1 Reply Last reply Reply Quote 0
            • Al HartA Offline
              Al Hart
              last edited by

              There was a bug in get_camera_distance.rb.

              I uploaded a new version.

              (One person had downloaded it already - sorry - please get a new version)

              Al Hart

              http:wiki.renderplus.comimageseefRender_plus_colored30x30%29.PNG
              IRender nXt from Render Plus

              1 Reply Last reply Reply Quote 0
              • Al HartA Offline
                Al Hart
                last edited by

                @tig said:

                But that measures the eye to target distance...
                You want the eye to object distance ?
                The object might be between the target and the eye positions !
                See my example on how to use the eye>>>target vector and raytest from the eye along that vector for objects in between... perhaps using a selected object as the source [it needs work as it was only a first draft... but selecting a group/instance between the eye and target will give the distance to it ?]
                😕

                I call get_distance(target) with the point from OnMouseMove() after calling pick(x,y) - not the target of the camera view.

                I think it is working properly.

                Here is a rendering after selecting the end of the cylinder as the target point and setting the Depth of Field to be very blurry (3.0).

                focal_length.jpg

                Al Hart

                http:wiki.renderplus.comimageseefRender_plus_colored30x30%29.PNG
                IRender nXt from Render Plus

                1 Reply Last reply Reply Quote 0
                • TIGT Offline
                  TIG Moderator
                  last edited by

                  I apologize... 😳
                  I hadn't read your script fully - your target isn't camera.target - you have a good idea - it works fine... 😎

                  TIG

                  1 Reply Last reply Reply Quote 0
                  • B Offline
                    Bertier
                    last edited by

                    hello

                    could that plugin be used to create motion blur in an animation ?

                    thank you.

                    1 Reply Last reply Reply Quote 0
                    • M Offline
                      mpowell1234567890
                      last edited by

                      Cool, thanks. Love it when I can know how far away something is in a model. 😄

                      @al hart said:

                      I took the utilitiestools.rb script in SketchUp, which displays an X,Y location as you move the mouse and changed it to display the distance from the camera instead.

                      [attachment=1:2q0r3qa8]<!-- ia1 -->get_focal_length.jpg<!-- ia1 -->[/attachment:2q0r3qa8]

                      The heart of the change is this routine to display the camera distance:

                      
                      > 	# get camera distance from the eye to a point at (x,y,0)
                      > 	def get_distance(target)
                      > 		model = Sketchup.active_model
                      > 		eye = model.active_view.camera.eye
                      > 		distance = eye.distance(target)
                      > 		# display in drawing units and inches
                      > 		slength = Sketchup.format_length(distance) + sprintf(" (%g\")", distance)
                      > 		return slength
                      > 	end#def
                      > 
                      

                      Try the attached script: get_camera_distance.rb

                      [Edit: I uploaded a new version of get_camera_distance.rb]

                      1 Reply Last reply Reply Quote 0
                      • P Offline
                        pibuz
                        last edited by

                        That is a lovely script, but it seems I'm not able to load it..
                        How can I do that?

                        Thanks a lot Al!

                        **EDIT: ok, I moved the original utilities rb to another folder and renamed your script "utilitiestools.rb", and it works: now I can get camera distance 😎
                        Is there a less homemade or brute method? 😆 Thanks again?

                        WEB (ita) - https://filipposcarso.wixsite.com/ordinentropico

                        1 Reply Last reply Reply Quote 0
                        • Dan RathbunD Offline
                          Dan Rathbun
                          last edited by

                          Renaming files is dangerous.

                          Make a subfolder of Plugins dir, named: !_autoload

                          " %(#8000BF)[Plugins/!_autoload]"

                          Then get my !autoload script here, and put it in Plugins folder.

                          After.. you can put little scripts that you wish to autoload in the " %(#8000BF)[Plugins/!_autoload]" folder.

                          I'm not here much anymore.

                          1 Reply Last reply Reply Quote 0
                          • A Offline
                            angeli7on
                            last edited by

                            Hi, I got confused about this.
                            I try using get_camera_distance but the result aren't DOF
                            am I missing something ?

                            here I attach my screen shot
                            if too small I also upload here:
                            http://imageshack.us/f/254/bingungdof2.jpg

                            please advice, thanks alot.


                            confusing dof

                            1 Reply Last reply Reply Quote 0
                            • TIGT Offline
                              TIG Moderator
                              last edited by

                              But the distance given by the tool is 703" - not '10' units in the Camera DOF dialog ?
                              Try using the real equivalent distance [in the correct units for that dialog] to see what happens.
                              The distance returned by the tool is the distance from the camera 'eye' up to the picked point - in your screenshot it's given in 'inches'...

                              TIG

                              1 Reply Last reply Reply Quote 0
                              • Chris FullmerC Offline
                                Chris Fullmer
                                last edited by

                                Yeah, so what are the expected units of that rendering dialog box? Feet? Meters? cm?

                                703 inches =

                                58.58 feet
                                17.8562 meters
                                1785.62 cm

                                My best guess is that it is expecting feet or meters based on the DOF shown in the 2 screenshots. 10 is too close, but 703 is clearly waaaaaaay to far. So its gotta be something in the middle, which would probably be feet or meters.

                                Lately you've been tan, suspicious for the winter.
                                All my Plugins I've written

                                1 Reply Last reply Reply Quote 0
                                • A Offline
                                  angeli7on
                                  last edited by

                                  Hi TIG and Chris Fullmer, thanks for your reply.
                                  I think I already put the unit into inch. and I already put 703 (not just 10) in Overide_focal_dist, but the result are all sharp.
                                  I got 703 from get_camera_distance plugin, on the red ball.
                                  here I attach another screenshot with color and setting, I'm going to make the red ball to be sharp and the other ball become blurry.
                                  Do you have simple samples of your blurred .skp ?
                                  and here also my .skp file in google drive:
                                  https://docs.google.com/open?id=0BxjFhe9IY4QWLWUyYVFKdFNWRHM
                                  many thanks for your help guys.


                                  confusing dof

                                  1 Reply Last reply Reply Quote 0
                                  • Chris FullmerC Offline
                                    Chris Fullmer
                                    last edited by

                                    It's unclear if you tried what we suggested. I told you to try 58.8 in case V-Ray is expecting the input to be in feet, or put 17.8562 in case it is expecting meters. Do those two numbers then report back.

                                    Lately you've been tan, suspicious for the winter.
                                    All my Plugins I've written

                                    1 Reply Last reply Reply Quote 0
                                    • Chris FullmerC Offline
                                      Chris Fullmer
                                      last edited by

                                      To elaborate again, the SketchUp pop-up is saying 703". But it appears that the V-Ray window is expecting the input to be in something other than inches, otherwise it would have worked. So other common units would be feet or meters. Since we know that object is 703" from the camera, we'll convert that to feet. It is 58.8 feet. Or maybe V-Ray is expecting meters, so convert 703" to meters and you get 17.8562 meters. That is why I'm saying try those two numbers, I'm hoping one will work. Then you will know from that point on, which unit V-Ray is expecting.

                                      Lately you've been tan, suspicious for the winter.
                                      All my Plugins I've written

                                      1 Reply Last reply Reply Quote 0
                                      • thomthomT Offline
                                        thomthom
                                        last edited by

                                        Have you tried adjusting the F-Stop?

                                        Thomas Thomassen — SketchUp Monkey & Coding addict
                                        List of my plugins and link to the CookieWare fund

                                        1 Reply Last reply Reply Quote 0
                                        • Chris FullmerC Offline
                                          Chris Fullmer
                                          last edited by

                                          Looks like he's got his f-stop set at 2.8. That should give a good DOF blur. And indeed in his first post, the image where he has f-stop at 2.8 and focal distance at 703, there is no visible blur, but when he changed the focal distance to 10, the entire image was blurry, indicating that the DOF is working, he just needs to set the correct distance.

                                          Lately you've been tan, suspicious for the winter.
                                          All my Plugins I've written

                                          1 Reply Last reply Reply Quote 0
                                          • Chris FullmerC Offline
                                            Chris Fullmer
                                            last edited by

                                            I'm already changing my mind. I can see that lowering the f-stop even more might be needed Thom, good call. That should definitely be tried as well.

                                            The further the object is, the harder it is to get a shallow DOF (blur). Lowering the aperture will help create even more blur. But its possible the object could be so far away that there will never be any apparent blur. You could resort to using tilt frame to force a blur. But I'm thinking at that distance, you should be able to get some blur.

                                            Lately you've been tan, suspicious for the winter.
                                            All my Plugins I've written

                                            1 Reply Last reply Reply Quote 0
                                            • 1
                                            • 2
                                            • 3
                                            • 1 / 3
                                            • First post
                                              Last post
                                            Buy SketchPlus
                                            Buy SUbD
                                            Buy WrapR
                                            Buy eBook
                                            Buy Modelur
                                            Buy Vertex Tools
                                            Buy SketchCuisine
                                            Buy FormFonts

                                            Advertisement