gt_2_toborrow_pick_ray_blend
-----写一个toborrow 函数,用前面的函数就行处理,
----include 的使用一定要括起来。
---好,下面是 射线借用函数。
global gt_2_collect_mesh_normal_vertexs,gt_2_collect_poly_vertexs,gt_2_pick_filter,gt_2_convertToMesh,gt_2_convertToPoly_Nopick,gt_2_toborrow_pick_ray_blend
---导入mesh的法线数组
(
include"E:\工作文件\2011.5.12\法线变形问题\gt_2_collect_mesh_normal_vertexs.ms"
)
---gt_2_collect_mesh_normal_vertexs $ 可用
---导入poly的顶点数组
(
include"E:\工作文件\2011.5.12\法线变形问题\gt_2_collect_poly_vertexs.ms"
)
---gt_2_collect_poly_vertexs $ 能用
---导入过滤的选择
(
include"E:\工作文件\2011.5.12\法线变形问题\gt_2_pick_filter.ms"
)
--------转mesh 在转poly 在这里里面都是要导入的,
(
include"E:\工作文件\2011.5.12\法线变形问题\gt_2_convertToMesh.ms"
)
(
include"E:\工作文件\2011.5.12\法线变形问题\gt_2_convertToPoly_Nopick.ms"
)
---- 但是在用这个函数时没有加入量数的 数量的限制 ,这个我要在事件中加入。
fn gt_2_toborrow_pick_ray_blend =
(
try (
target_mesh = pickObject message:"Pick Target Surface:" filter:gt_2_pick_filter rubberBand:selection.center rubberBandColor:green --- 这种拾取的方法更好。不用再显示;
)catch (messagebox "可能是过滤函数丢失造成的。" title:"盖天编写" )
if isValidNode target_mesh then ---这个好用, 是如果节点没有被删除。
(
undo "scripts" on
(
---把拾取的物体转成mesh
convertToMesh target_mesh
gt_2_convertToMesh $
normal_array =gt_2_collect_mesh_normal_vertexs $ ---mesh法线数组
gt_2_convertToPoly_Nopick $
poly_verects_array = gt_2_collect_poly_vertexs $ ---poly 点的坐标数组
for i in 1 to normal_array.count do
(
local testRay = ray poly_verects_array[i] normal_array[i]
int_point= intersectRay target_mesh testRay
-- print int_point as string
if int_point != undefined and int_point != ok then
(
----应该是设置的点的坐标 到新的位置上去。
ray_pos_point = (int_point.pos)---int_point.pos 射线的位置
polyop.setVert $ i ray_pos_point
-- print int_point.pos
)
)--end i loop
----把法线转回来
try (
oop = Normalmodifier ();oop.flip =true
addModifier $ oop
convertToMesh $ )catch (
messagebox "操作不当,没按流程操作。\n返回。" title:"盖天编写"
return false
)
)--end undo
)--end if
)----end fn gt_become_deformed_pick_Aligner