sketchucation logo sketchucation
    • Login
    🤑 SketchPlus 1.3 | 44 Tools for $15 until June 20th Buy Now

    Move a Parallel Camera

    Scheduled Pinned Locked Moved Developers' Forum
    15 Posts 5 Posters 781 Views 5 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.
    • J Offline
      Jim
      last edited by

      I have this snippet to zoom out - just moves the camera away from the taget along the line-of-sight. Any idea why it works when the Camera is Perspective, but not Parallel?

      
      factor = 0.5
      model = Sketchup.active_model
      view = model.active_view
      c = view.camera
      t = c.target
      e = c.eye
      up = c.up
      vec = t - e
      vec.length = vec.length * factor
      c.set(e-vec, t, up)
      
      

      Hi

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

        I changed the factor to 1000 and ran it about 10 times really fast.....that broke my SketchUp 😄

        I have not got the right answer, but in parallel mode, backing the camera out should not widen the view of what is ont he screen. It seems like you would need to widen the FOV or something to make it feel like you are backing up.

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

        1 Reply Last reply Reply Quote 0
        • J Offline
          Jim
          last edited by

          Thanks Chris, that makes sense.

          When I plot the Camera eye over several "zoom outs", the cpoints do indicate the Camera is moving away.

          So I'm still not sure why the view doesn't appear to move, even if the Camera is. Zoom and Pan still work with a Parallel Camera. Moving the Camera away should still make everything appear smaller.

          Hi

          1 Reply Last reply Reply Quote 0
          • mitcorbM Offline
            mitcorb
            last edited by

            I don't really know what I'm talking about, but from an intuitive view, do you have to transform the OpenGL frustum or camera cone of vision in order for the display to "shrink"? Or is the frustum a fixed thing and ...mumble...mumble??

            I take the slow, deliberate approach in my aimless wandering.

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

              Does appending a call to view.refresh (at the end of the code,) have any effect ??

              I'm not here much anymore.

              1 Reply Last reply Reply Quote 0
              • J Offline
                Jim
                last edited by

                No, no difference.

                I did notice that when I switch back to a Perspective Camera, the camera jumps way back.

                Hi

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

                  OK.. and what happens when you switch back to Parallel ?

                  I'm not here much anymore.

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

                    A few other questions:

                    Do these have any effect?

                    view.invalidate()

                    view.dynamic=true

                    I'm not here much anymore.

                    1 Reply Last reply Reply Quote 0
                    • J Offline
                      Jim
                      last edited by

                      Neither has nay effect.

                      Hi

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

                        Maybe change to perspective mode, then move, then jump back to parallel? Or do that on a camera that is not active_view and then apply that camera to the active view?

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

                        1 Reply Last reply Reply Quote 0
                        • J Offline
                          Jim
                          last edited by

                          Yep, thanks. I can make something work. I guess at this point I am curious to understand what's going on.

                          Hi

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

                            @chris fullmer said:

                            Maybe change to perspective mode, then move, then jump back to parallel?

                            That is what I meant when I asked:
                            @dan rathbun said:

                            OK.. and what happens when you switch back to Parallel ?

                            I'm not here much anymore.

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

                              Solved.

                              This code works no matter what mode the camera is in, AND resets the mode back to the previous mode. (See ### bracketed statements that I added.)

                              zoomtest.rb

                              <span class="syntaxdefault"></span><span class="syntaxcomment">#<br /><br /></span><span class="syntaxdefault">module SU_Test<br /><br />  </span><span class="syntaxcomment">#<br /><br /></span><span class="syntaxdefault">  def self</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">zoomtest</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault">    factor </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> 0.5<br />    model </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model<br />    view </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_view<br />    c </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> view</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">camera<br />    </span><span class="syntaxcomment">###<br /></span><span class="syntaxdefault">    cp</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">c</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">perspective</span><span class="syntaxkeyword">?<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">###<br /></span><span class="syntaxdefault">    t </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> c</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">target<br />    e </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> c</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">eye<br />    up </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> c</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">up<br />    vec </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> t </span><span class="syntaxkeyword">-</span><span class="syntaxdefault"> e<br />    vec</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">length </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> vec</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">length </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> factor<br />    </span><span class="syntaxcomment">###<br /></span><span class="syntaxdefault">    c</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">perspective</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">true if cp</span><span class="syntaxkeyword">==</span><span class="syntaxdefault">false<br />    </span><span class="syntaxcomment">###<br /></span><span class="syntaxdefault">    c</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">set</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">e</span><span class="syntaxkeyword">-</span><span class="syntaxdefault">vec</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> t</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> up</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">###<br /></span><span class="syntaxdefault">    c</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">perspective</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">false if cp</span><span class="syntaxkeyword">==</span><span class="syntaxdefault">false<br />    </span><span class="syntaxcomment">###<br /></span><span class="syntaxdefault">  end<br /><br />  unless defined</span><span class="syntaxkeyword">?(@</span><span class="syntaxdefault">LoadedOnce</span><span class="syntaxkeyword">)==</span><span class="syntaxstring">'instance-variable'<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">@</span><span class="syntaxdefault">LoadedOnce</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">false<br />  end<br /><br />  def self</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">loaded_once</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">@</span><span class="syntaxdefault">LoadedOnce<br />  end<br />  <br />  def self</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">loaded_once</span><span class="syntaxkeyword">=(</span><span class="syntaxdefault">arg</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">@</span><span class="syntaxdefault">LoadedOnce</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">arg<br />  end<br /><br />end </span><span class="syntaxcomment"># module<br /><br /></span><span class="syntaxdefault">  unless SU_Test</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">loaded_once</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">#<br /></span><span class="syntaxdefault">    UI</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">menu</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Plugins'</span><span class="syntaxkeyword">).</span><span class="syntaxdefault">add_item</span><span class="syntaxkeyword">(</span><span class="syntaxstring">'Zoom Out Test'</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{</span><span class="syntaxdefault"> SU_Test</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">zoomtest</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">#<br /></span><span class="syntaxdefault">    SU_Test</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">loaded_once</span><span class="syntaxkeyword">=</span><span class="syntaxdefault">true<br />    </span><span class="syntaxcomment">#<br /></span><span class="syntaxdefault">  end<br /></span>
                              

                              I'm not here much anymore.

                              1 Reply Last reply Reply Quote 0
                              • J Offline
                                jhauswirth
                                last edited by

                                You need to use camera.height in parallel mode.

                                1 Reply Last reply Reply Quote 0
                                • J Offline
                                  Jim
                                  last edited by

                                  @jhauswirth said:

                                  You need to use camera.height in parallel mode.

                                  Thank you, that works.

                                  Hi

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

                                  Advertisement