[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [826] branches/ivygen/ivy_test.py: - update to the colliderproblem.
Florian Meyer
florianfelix at web.de
Wed Jul 21 03:10:10 CEST 2010
Revision: 826
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=826
Author: testscreenings
Date: 2010-07-21 03:10:09 +0200 (Wed, 21 Jul 2010)
Log Message:
-----------
- update to the colliderproblem.
- still not solved
- uncommented it to let someone who is willing try to solve it
- ---why the... has the cube no mesh anymore in the second run
Modified Paths:
--------------
branches/ivygen/ivy_test.py
Modified: branches/ivygen/ivy_test.py
===================================================================
--- branches/ivygen/ivy_test.py 2010-07-20 22:11:02 UTC (rev 825)
+++ branches/ivygen/ivy_test.py 2010-07-21 01:10:09 UTC (rev 826)
@@ -2,7 +2,7 @@
from bpy.props import *
import mathutils
import random
-from ivy_functions import *
+#from ivy_functions import *
import math
@@ -99,6 +99,7 @@
# list of containing Roots
def __init__(self):
self.ivyRoots = []
+ #self.ivyCollider = obj
ivyRoots = []
@@ -182,19 +183,35 @@
gravityVector *= math.pow(prevIvy.floatingLength / self.maxFloatingLength, 0.7)
# compute COLLISION
- #collisionResult = collision(self.ivyCollider, root, prevIvy.position + growVector + gravityVector)
- #update growVector in case of collision
- #growVector = newPos - root->nodes.back().pos - gravityVector
-
- #print('old_Grow', growVector)
- #growVector = collisionResult[1] - prevIvy.position - gravityVector
- #print('new_Grow', growVector)
-
+ ####################################################################################################
+ ####################################################################################################
+ ####################################################################################################
+ ####### put in here for testing, until the error is fixed ##########################################
+ climbing, new_pos = collision(self.ivyCollider, root, prevIvy.position + growVector + gravityVector)
+ ####### delete, comment out when fixed #############################################################
+ ####################################################################################################
+ ####################################################################################################
+ ####################################################################################################
+
+ try:
+ climbing, new_pos = collision(self.ivyCollider, root, prevIvy.position + growVector + gravityVector)
+ #print('old_Grow', growVector)
+ #update growVector in case of collision
+ growVector = new_pos - prevIvy.position - gravityVector
+ #print('new_Grow', growVector)
+
+ except:
+ print('---COLLISION FAILED---')
+
+
# create new IvyNode
tmpIvy = IvyNode()
# set climbing state
- #tmpIvy.climbing = collisionResult[0]
+ try:
+ tmpIvy.climbing = climbing
+ except:
+ pass
# set position
tmpIvy.position = prevIvy.position + growVector + gravityVector
@@ -247,8 +264,12 @@
deadlockCounter = 0
climbing = False
+ #print('Collider Object: ', ob.name)
+
ray_result = ob.ray_cast(old_pos, new_pos)
if ray_result[2] != -1: # if collides with mesh
+ print('Collided with Object: ', ob.name)
+
climbing = True
face = ob.data.faces[ray_result[2]]
@@ -259,42 +280,52 @@
(face.normal * face.normal.dot(ray_result[0]))))
new_pos += 2.0 * (projVec - new_pos)
- print('colliding')
+ #print('\ncolliding')
- else:
- print('not colliding')
+ #else:
+ #print('not colliding')
collisionResult = [climbing, new_pos]
- return collisionResult
+ return climbing, new_pos
-def main(context, props, data):
+def main(context, props, data, collider):
seedPoint = context.scene.cursor_location #start the Ivy at the cursor
- random.seed(props.ivySeed) #controlling the random seed
-
+ random.seed(props.ivySeed) #controlling the random seed
scene = context.scene
- #try:
- # obj = context.active_object
-
- IVY = Ivy() #create main IvyObject stores all the IvyRoots.IvyNodes
- #try:
- # IVY.ivyCollider = obj
- # print('obj.data', IVY.ivyCollider.data)
-
- # PROBLEM: SOMEHOW DOESN'T WORK
- IVY.ivyRoots = [] #empty the roots list
- IVY.seed(seedPoint, parentOrder=0, primaryVector=mathutils.Vector((0,0,1))) #set inital IvyRoot
+ try:
+ obj = context.active_object
+ print('context.active_object', context.active_object.name)
+ except:
+ obj = None
- for i in range(props.ivyIter): #for now usercontrollable growiterations
+ #create main IvyObject stores all the IvyRoots.IvyNodes
+ IVY = Ivy()
+
+ print('preLoop collider is', IVY.ivyCollider)
+
+ # set collider object
+ IVY.ivyCollider = collider
+ print('setting collider to', IVY.ivyCollider.name)
+
+ #empty the roots list
+ IVY.ivyRoots = []
+
+ #set inital IvyRoot
+ IVY.seed(seedPoint, parentOrder=0, primaryVector=mathutils.Vector((0,0,1)))
+
+ #for now usercontrollable growiterations
+ for i in range(props.ivyIter):
IVY.grow(props)
- print('IvyNodes[root[0]:', len(IVY.ivyRoots[0].ivyNodes))
+ print('\nIvyNodes[root[0]:', len(IVY.ivyRoots[0].ivyNodes))
print('IvyRoots:', len(IVY.ivyRoots))
- #createIvy(context, IVY) # create emptis at IvyRoots
- createIvyCurves(context, IVY) #create Curverepresentation of the Ivy
+ #create Curverepresentation of the Ivy
+ createIvyCurves(context, IVY)
+
return
class ivy_test2(bpy.types.Operator):
@@ -322,18 +353,19 @@
max=1,soft_max=1,
default=0.5)
+ collider = None
+
def poll(self, context):
return context.active_object != None
def execute(self, context):
print('\n____________START_____________')
# turn off undo
- undo = bpy.context.user_preferences.edit.global_undo
- bpy.context.user_preferences.edit.global_undo = False
+ #undo = bpy.context.user_preferences.edit.global_undo
+ #bpy.context.user_preferences.edit.global_undo = False
props = self.properties
data = []
- print(props)
# compute boundingSphere and put into props if abs mesh is selected
if (context.active_object
and context.active_object.select
@@ -341,10 +373,14 @@
targetBoundingSphere = computeBoundingSphere(bpy.context.selected_editable_objects)
data.append(targetBoundingSphere)
+ if self.collider == None:
+ self.collider = context.active_object
- main(context, props, data)
+
- bpy.context.user_preferences.edit.global_undo = undo
+ main(context, props, data, self.collider)
+
+ #bpy.context.user_preferences.edit.global_undo = undo
return {'FINISHED'}
More information about the Bf-extensions-cvs
mailing list