SketchyPhysics 3x June 27 version.
-
@wacov said:
Took quite a while to code this right, and I can't get the faces to smooth, but here it is! Seamless cloth!!
Very impressive Wacov!
-
@phy said:
Um, CPillips how do you use the breakit command or is it a command. I don't mean the split command by the way. Wacov that's fantastic.
"breakit" is an internal command called by "split". If you want to break an object into more than 2 pieces use this:
split(self,2)
The "2" means split twice, so you'll get 4 pieces. If you use 3 you will get 16 pieces. 4=256. So dont go nuts. Also remember Sketchup will sometimes crash when you split. The more splits the more likely this is to happen.
-
I was going to do an example for split, but it turns out there are some more bugs with it. It wont work in "onstart" for example. use this instead:
ontick{ if(frame==1) split(self,2)#break into 4 pieces ontick{} #disable ontick end }
-
Okay thanks.
-
Got cloth smoothing working, and made it easier to change the scripting (everything's in the floor). Chris, it seems if there's a script error in onend, objects fail to move back to their starting positions... and it can't be undone Try sticking jargon in onend, and see for yourself.
Anyway, the updated cloth!
-
@wacov said:
Chris, it seems if there's a script error in onend, objects fail to move back to their starting positions... and it can't be undone Try sticking jargon in onend, and see for yourself.
Thanks. I fixed it.
-
This script is inspired by a new model on 3dwarehouse that ran really smooth... once I turned off shadows and edges.
Paste this into one objects scripted field. It tries to speed up the rendering by disabling shadows and edges during the simulation. Don't worry if you dont understand it. It should be plug and play.
onstart{ #save current settings ropts=Sketchup.active_model.rendering_options sopts=Sketchup.active_model.shadow_info @saveROpts=ropts.collect{|k,v|[k,v]} @saveSOpts=sopts.collect{|k,v|[k,v]} #changes to speed up render ropts["EdgeDisplayMode"]=0 sopts["DisplayShadows"]=false } onend{ #restore render settings. @saveROpts.each{|k,v|; Sketchup.active_model.rendering_options[k]=v} @saveSOpts.each{|k,v|; Sketchup.active_model.shadow_info[k]=v} }
-
Thanks, that script will be really helpful
The bot... Love playing with it! (I know it's Pecoler's)
By the way, how do you keep the breakable objects already broken? I mean, they are crashed and the simulation didn't start. -
Uh... Chris... the Joystick commands don't work. I know you said it's all completely new, but that seems like a step backwards
You can bridge the gap using global variables, but that's the only way I can find... here's a demo:
-
Um, Wacov is the file supposed to not work?
Okay it works now. -
If you cut the script in box1, and run and reset the simulation, and then paste the script back into box1 it will work, I don't know why.
-
Sketchyphysics isn't recognizing @@pos2 for some reason. To see for yourself open ruby console hit the play button.
-
Thanks Phy! Since you pinpointed it, I found the problem. Seems it was trying to use @@pos2 before it had been created, I just had to add it into onstart and it worked fine!
-
Okay, playing around with vectors (another toe in the API pond). Basically, I'm finding them, then changing their length with joystick inputs. I then use them to control the velocity of an object; in this case, the player in an FPS system; this works pretty sweet, so I'll continue to add features, and see where it takes me!
EDIT: Fixed. Tell me if it's not
-
there is an Error. double-clicking wont kick the object.
-
I removed double click = kick because it was seldom used and interfering with the new events.
-
Here is another useful script. It allows scripts to print text to the screen. In this case a log of whatever touches the floor.
#add blank text to screen at 10,50 @@log=SketchyPhysics;;addWatermarkText(10,50,"") #place to store lines @@lines=[] ontouch{|t,s,p| #add new line @@lines.push(t.name+" touched "+self.name) #ensure only 5 lines on screen at once. @@lines.shift if @@lines.length>5 #display lines @@log.text=@@lines.join("\n") } onend{ @@log.erase! @@lines=nil }
-
Very nice script!
Can we upload with this version if we don't use the new features?
-
Never really got back to this one: Are we going to be able to set an object's scripting from an external source code?(ie setting an emitted object to explode on impact.)
-
Nice question, what do you want it for?
Something like this should work (this one doesn't work, just play around with it):
ontouch{|toucher,speed,pos| if(toucher.name=="box"){ split(self,1) } end }
Hope this helps!
Advertisement