(2012-01-07 旧博文搬运)[away3d]Segment与LineSegment的区别

away3d中有2种线段:

away3d.core.base.Segment和away3d.primitives.LineSegment

 

前者属于一种构成mesh(面)的基本要素,后者只则是只包含一条segment的mesh,如果混淆很容易出现问题

 

今天做一个点+线段构成的立方体,我开始打算建一个mesh,里面用mesh.addSprite()来添加8个Sprite3d类表示的顶点,再用mesh.addSegment()来添加线段,但是我并没有打算把这8个点按顺序连起来,而是想用在第一个点上射出7条线连到另外的7个点,所以我的XML是这样的:

  <points>
     <point x="100" y="100" z="100"/>
     <point x="100" y="-100" z="100"/>
     <point x="100" y="-100" z="-100"/>
     <point x="-100" y="-100" z="-100"/>
     <point x="-100" y="-100" z="100"/>
     <point x="-100" y="100" z="100"/>
     <point x="-100" y="100" z="-100"/>
     <point x="100" y="100" z="-100"/>
  </points>
  <segments>
     <segment point1="0" point2="1"/>
       <segment point1="0" point2="2"/>
     <segment point1="0" point2="3"/>
     <segment point1="0" point2="4"/>
     <segment point1="0" point2="5"/>
     <segment point1="0" point2="6"/>
     <segment point1="0" point2="7"/>
  </segments>

 

这是我只添加了点,没有加线段时的图:

很容易看出是一个立方体的8个顶点。

 

然后我用mesh.addSegment(v0,v1,metrial)的方法来加线段,但是却变成了这样:

(2012-01-07 旧博文搬运)[away3d]Segment与LineSegment的区别_第1张图片

顶点只剩下头尾显示,中间的都没了,而且线段的连接不是我所希望的从一点射出7条,居然是按顺序连接的!无论后来我怎么更改addSegment方法中的v0,v1(顶点,终点)的坐标,这些线段永远都是从头到尾按顺序连接的之前放置的顶点,即使添加超过8条的线段,最多只显示8条,也就是从头到尾,然后尾巴再和头连起来正好8条。

 

最后发现了有LineSegment类,这个类本身就是继承自mesh的,是一个普通的3d线段。所以最后顶点们都在一个mesh中而线段们都在一个ObejctContainer3d类容器中,实现了我想要的效果:

(2012-01-07 旧博文搬运)[away3d]Segment与LineSegment的区别_第2张图片

你可能感兴趣的:((2012-01-07 旧博文搬运)[away3d]Segment与LineSegment的区别)