Sketchup Web Exporter
-
The swivelButton.rb code is set to zoom extents and then x1.1 so there's some white space around the object etc
<span class="syntaxdefault">def SwivelButton</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">zoomInitial</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_view</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">zoom_extents<br /> eyeNow </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_view</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">camera</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">eye<br /> targetNow </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_view</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">camera</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">target<br /> upvec </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_view</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">camera</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">up<br /> </span><span class="syntaxcomment"># draw the circle at our elevation (z coord)<br /></span><span class="syntaxdefault"> bb </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">bounds</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> bbcenter </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> bb</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">center</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> <br /> centerpoint </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> targetNow</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> viewvec </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> eyeNow </span><span class="syntaxkeyword">-</span><span class="syntaxdefault"> targetNow<br /> unitviewvec </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> viewvec</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">normalize</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment"># add a boundary by backing up a bit more,<br /></span><span class="syntaxdefault"> standoff_distance </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> getStandoffDistance</span><span class="syntaxkeyword">()</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">*</span><span class="syntaxdefault"> 1.1</span><span class="syntaxkeyword">;</span><span class="syntaxdefault"> <br /> <br /> </span><span class="syntaxcomment"># the eye will lie along the current view line so it is <br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment"># standoff_distance away from the target<br /></span><span class="syntaxdefault"> standoff_vec </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> unitviewvec</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> standoff_vec</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">length </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> standoff_distance</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault"> standoff_eyepoint </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> bbcenter </span><span class="syntaxkeyword">+</span><span class="syntaxdefault"> standoff_vec</span><span class="syntaxkeyword">;<br /><br /></span><span class="syntaxdefault"> c </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Camera</span><span class="syntaxkeyword">.new<br /></span><span class="syntaxdefault"> <br /> c</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">set</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">standoff_eyepoint</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">bbcenter</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">upvec</span><span class="syntaxkeyword">)<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment"># now stick this camera on our view<br /></span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_view</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">camera </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> c<br />end</span>
You can modify this method thus
<span class="syntaxdefault">def SwivelButton</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">zoomInitial</span><span class="syntaxkeyword">()<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">###Sketchup.active_model.active_view.zoom_extents<br /></span><span class="syntaxdefault"> eyeNow </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_view</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">camera</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">eye<br /> targetNow </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> ORIGIN </span><span class="syntaxcomment">###Sketchup.active_model.active_view.camera.target<br /></span><span class="syntaxdefault"> upvec </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_view</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">camera</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">up<br /> </span><span class="syntaxcomment"># draw the circle at our elevation (z coord)<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">###bb = Sketchup.active_model.bounds;<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">###bbcenter = bb.center;<br /></span><span class="syntaxdefault"> <br /> </span><span class="syntaxcomment">###centerpoint = targetNow;<br /><br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">###viewvec = eyeNow - targetNow<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">###unitviewvec = viewvec.normalize;<br /><br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment"># add a boundary by backing up a bit more,<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">###standoff_distance = getStandoffDistance() * 1.1; <br /></span><span class="syntaxdefault"> <br /> </span><span class="syntaxcomment"># the eye will lie along the current view line so it is <br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment"># standoff_distance away from the target<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">###standoff_vec = unitviewvec;<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">###standoff_vec.length = standoff_distance;<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment">###standoff_eyepoint = eyeNow ###bbcenter + standoff_vec;<br /><br /></span><span class="syntaxdefault"> c </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">;;</span><span class="syntaxdefault">Camera</span><span class="syntaxkeyword">.new<br /></span><span class="syntaxdefault"> <br /> c</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">set</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">eyeNow</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">targetNow</span><span class="syntaxkeyword">,</span><span class="syntaxdefault">upvec</span><span class="syntaxkeyword">)</span><span class="syntaxcomment">###c.set(standoff_eyepoint,bbcenter,upvec)<br /></span><span class="syntaxdefault"> </span><span class="syntaxcomment"># now stick this camera on our view<br /></span><span class="syntaxdefault"> Sketchup</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_model</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">active_view</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">camera </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> c<br />end</span>
This sets the target as the ORIGIN, keeps the current 'eye' and adds NO white space.
Untried... but you can see where it's going... -
no, it seems this affects only the preview...then, when hit "create" it still zooms out to fit the scene. I believe you should modify the way it creates a circle which is the base of cameras path. As I understood, it takes the dimensions of the model's bounding box to compute how far the camera is from the model and the radius of that construction circle...maybe could be enough using the bounding box of a selection instead of the entire model and all other methods follow... maybe! I'm not able to read and understand a script
-
OK...
That's because I only showed how to correct the start frame...
To change the rest of the frames there's more stuff to change...
This is a dirty hack leaving lots of things making arrays etc that are then not used!
Change line #634 to read something like
pt=Sketchup.active_model.active_view.camera.eye;up=Sketchup.active_model.active_view.camera.up;tr=Geom::Transformation.rotation(ORIGIN,up,360.degrees/numseg);pnts=[pt];numseg-1.times{pnts<<pt.transform!(tr);};return pnts
[NB: This is untested]...
The whole thing could be rewritten a lot simpler to allow the user to determine the extents of the view etc... My nudgeOrbit.rb could be the basis of this as that simply rotates the camera around the target by given angular increments... You then combine that camera with exporting the image... -
Anyone still interested in this?
...NEED to Open in new tab, not continuous on Safari...
I've been hacking the code for use on mac and worked out the bits needed to change the default zoomingthe gif is b+w and jumpy [down-sized for upload to the forum], but shows the base disc is filling the frame.
The web animation is smooth and full color, but we can't post those here...
I'll put some test up elsewhere if anyone wants.I need to figure out a couple more things but those bits should work on PC's, if anyones interested.
john
-
That .gif animates once then stops. Can you upload one that runs 'forever'?
It is of interest though
-
rich,
how big a file can I upload? and have you ever made gifs with 'image magicks' it seems to redistridute 0-9 amongst the others...
-
4mb.... i think?
I use PS for animated gif so i know it gives good control over file sizes. The thing with your gif is that members may miss the animation element if they read later/earlier posts. Still pretty neat output though.
-
you can get them straight out of SU, but the settings are a bit of a learning curve.... will repost when I work it out.
-
No image?
-
test....no.11
convert -set -delay 400 -colorspace rgb -ordered-dither o8x8,8,8,4 -dispose 1 -depth 8 -loop 0 -scale 100% *.jpg macHack14.gif
manually reordered the sequence, runs fine from file,
point is do you want to 'fix' the PC version... to not zoom out.
-
i was trying to upload, others and forgot i was in edit mode, not new...
the limit is 2MB, can I get a raise, it's so hard to meet this one 1.6MB but half size.
IM Settingsconvert -set -delay 400 -colorspace rgb -ordered-dither o8x8,8,8,4 -dispose 1 -depth 8 -loop 0 -scale 50% *.jpg macHack16.gif
john -
This is my actual selection and the resultant output file ready for playback in SU.
Advertisement