Plane用图片做材质,Sphere地球就有线框
jatai (2010-11-03 10:42:13)
不知道哪发附件,我就发源码了
Plane用颜色做材质,或不加载图片时, 地球是没有线的,加载了外部图片后,就出线框了
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81.
|
package { import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event;
import org.papervision3d.Papervision3D; import org.papervision3d.cameras.Camera3D; import org.papervision3d.core.proto.MaterialObject3D; import org.papervision3d.materials.BitmapFileMaterial; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.objects.primitives.Sphere; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D;
public class main extends Sprite { private var scene:Scene3D; private var camera:Camera3D; private var view:Viewport3D; private var render:BasicRenderEngine; private var sphere:Sphere; private var plane:Plane; private var material:BitmapFileMaterial;
public function main() {
init3D(); this.addEventListener( Event.ENTER_FRAME, loop3D );
} private function init3D():void {
scene=new Scene3D(); camera=new Camera3D(); camera.focus=12; view=new Viewport3D(490, 364); addChild(view); render=new BasicRenderEngine(); addEarth(); addSpaces(); } private function addSpaces():void { var materialSpace :ColorMaterial = new ColorMaterial( 0xFF0000, 0.5 ); materialSpace.doubleSided = true; var total:int =7; var rad :Number = 400;
for (var i:int = 0; i < total; i++) { var material:BitmapFileMaterial = new BitmapFileMaterial("img/image_" + i + ".jpg"); material.doubleSided = true; var plane:Plane = new Plane( material, 120, 120, 1, 1 ); var ax :Number = Math.random() * Math.PI; //var ay :Number = 2+Math.random() * Math.PI ; var ay :Number = Math.random() * Math.PI * 2;
plane.x = rad * Math.sin( ax ) * Math.cos( ay ); plane.y = rad * Math.sin( ax ) * Math.sin( ay ); plane.z = rad * Math.cos( ax );
plane.lookAt( sphere ); sphere.addChild( plane ); } } private function addEarth():void { material=new BitmapFileMaterial("New_earthmap.jpg"); sphere=new Sphere(material, 350, 20, 20); scene.addChild(sphere); sphere.y=-20; } private function loop3D(e:Event):void { sphere.yaw(-1); render.renderScene(scene, camera, view); } } } |