Sketchup Web Exporter
-
Adding the code above to line 822 of swivelButton.rb fixes the preview image:
Sketchup.active_model.active_view.zoom_extents
Then modify line 572 of swivelButton.rb from:
standoff_distance = getStandoffDistance() * 1.1;
to
standoff_distance = targetNow.distance eyeNow
Add the following line above line 583 so you end up with:
standoff_eyepoint = eyeNow; centerpoint.z = standoff_eyepoint.z;
Comment out lines 656 to 663:
# bb=Sketchup.active_model.bounds # pmax = bb.max # pmin = bb.min # zdiff = bb.max[2]-bb.min[2] # pcenter = bb.center # targetNow = pcenter # up = Geom;;Vector3d.new(0.0,0.0,1.3*zdiff) # upTarget = pcenter + up
The code before tried to fit the entire model into the view by getting the bounding box of the active model and drawing a circle around it, then panning the camera around that circle.
My fix, simply draws a circle around the model from the current cameras position and then pans around that circle.
-
Hi, I also would like the web exporter didn't zoom to extents the model, I was trying to change the script but seems the line reference of richhinton are wrong anyone had success with it? can you share the whole modified .rb file?
-
Hi Luca,
What if you draw a big sphere all around the model (so it fits inside all extent) and paint this sphere with a completely transparent png file (and also make it cast no shadow at all)? This could fool the script (hopefully) as it would always zoom extents of the surrounding sphere (which would be an even zooming of course).
Here is a model whose scene animation I made the same way (so not exactly the same case but similar solution). I then deleted the sphere (there - as the scenes will retain the camera position - obviously you should not delete your sphere).
http://sketchup.google.com/3dwarehouse/details?mid=ed6358317ca6c63cf316679995e7e4d8 -
Thanks Gai, but I've the opposite problem
-
Is there anything else in that model? Anything on a hidden layer? Also, where is the origin?
Sorry but I have never used this plugin so I am not sure how to trouble shoot it - especially with scripting. I can only approach these things from some practical, SU related point of view.
-
No, there are no other objects and it's centered with the origin, the fact is that the plugin forces a resize to fit the scene (that could be a reasonable choice to show your model) but I'd prefer to keep the current view because I want to show only the central part of the scene
-
And what if you make the images this way - just big resolution export enough - and crop them to get what you want?
(Sorry gain that I can only offer these lame workarounds as I know as much about ruby scripting as about woodworking)
-
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