编程C,C ++,Java,PHP,Ruby,图灵,VB
计算机科学加拿大 
编程C,C ++,Java,PHP,Ruby,图灵,VB  

用户名:    Password: 
  登记 登记    
 Homer的Java 3D引擎!(更新:添加了真实灯光!!!)
指数 -> 编程,Java. -> java. 提交
转到页面 1, 2   下一个
查看上一个主题 可打印的版本下载主题利率主题订阅本主题私人信息刷新页面 查看下一个主题
作者 信息
homer_simpson.




 邮政 发布: Thu Mar 04,2004 6:55 PM  帖子主题:Homer的Java 3D引擎!(更新:添加真实照明!!!)

鳍ally here!
当前功能:
文件导入
相机
zsort.
假灯

添加
更快zsort.
真空
更多功能相机
也许甚至是纹理!

包括源代码!!!



Engine3.zip.zip.
 Description:

下载
 Filename:  engine3.zip
 Filesize:  4.5 KB
 Downloaded:  375 Time(s)

赞助
赞助
 赞助
 赞助





 邮政 发布: Thu Mar 04,2004 7:06 PM  帖子主题:(没有主题)

当我试图运行这个时,我刚收到错误。它是应用程序还是applet?
计算机科学加拿大 帮助在C,C ++,Java,PHP,Ruby,图灵,VB等内容中进行编程!
homer_simpson.




 邮政 发布: 星期四04,2004 7:16 PM  帖子主题:(没有主题)

固定的!!!

并从中下载一些型号 http://9tt6y.icu/models.zip
催化剂




 邮政 发布: THU MAR 04,2004 7:59 PM  帖子主题:(没有主题)

对我不起作用,
说它无法找到drawView
homer_simpson.




 邮政 发布: Thu Mar 04,2004 8:13 PM  帖子主题:(没有主题)

Shaznats!
催化剂




 邮政 发布: Thu Mar 04,2004 9:37 PM  帖子主题:(没有主题)

我喜欢
很高兴

我想知道Java有多快......
WTD.




 邮政 发布: THU MAR 04,2004 9:57 PM  帖子主题:(没有主题)

催化剂写道:
我喜欢
很高兴

我想知道Java有多快......


非常快。

主流速度在AWT和Swing Toolkits中。如果没有它们,甚至java代码均未准备到本机机代码才能迅速地运行。只需查看正在运行Java的所有服务器,并且公司推动它。 IBM,Sun,Apple(维护者 最大的多媒体网站 在互联网上)等。

然后,有项目如GCJ,旨在将Java直接编译到机器代码,并且JIT项目如IBM的Jikes,即在编译的Java程序中乘坐编译的Java程序并将它们转换为本机代码第一次运行。
homer_simpson.




 邮政 发布: THU MAR 04,2004 10:05 PM  帖子主题:(没有主题)

催化剂男人!出于排序和物品,我已经运行了10000波隆+疯了!
这都是实验性的,但它使我很容易理解更多的高级发动机,如OGL ...所以我可能会制作自己的多边形填充,因此我自己的Z缓冲系统......
赞助
赞助
 赞助
 赞助
催化剂




 邮政 发布: 星期四04年,2004年10:24 PM  帖子主题:(没有主题)

好的
用这种速度,我想我可能会在Java的3D引擎上尝试我的手......
homer_simpson.




 邮政 发布: 星期四04年,2004年10:27 PM  帖子主题:(没有主题)

我想在C ++中尝试它有更好的语法......你曾经在C ++中尝试过吗?(不使用OGLOURSE)
催化剂




 邮政 发布: 星期四04年,2004年10:49 PM  帖子主题:(没有主题)

我没有
我不确定如何使用ogl或windows访问屏幕w / o
WTD.




 邮政 发布: THU MAR 04,2004 10:59 PM  帖子主题:(没有主题)

当您在C ++中编程时,为什么不能使用OpenGL?

以下页面有教程(您可能必须向下滚动):

http://www.cprogramming.com/tutorial.html
催化剂




 邮政 发布: THU MAR 04,2004 11:03 PM  帖子主题:(没有主题)

我可以,并且在C ++中使用OpenGL
我认为写软件渲染器会有趣(例如,不使用它)
homer_simpson.




 邮政 发布: THU MAR 04,2004 11:10 PM  帖子主题:(没有主题)

我知道如何在装配中绘制像素......你可以轻松地将asm导入asm到c ++和pascal ......并相信我没有比aleembly更快地运行的语言......毕竟它是机器语言......

根据我的计算,需要21811200时钟滴答,以在640x480 rewsolution页面中渲染整个页面!根据我的计算再次,我的CPU使用率约为1/7741 ......
homer_simpson.




 邮政 发布: 星期五2004年3月5日星期五下午8:17  帖子主题:(没有主题)

更新
添加了东西:
秤(x,y,z)命令
更快的z排序

很快被添加了多态普通木头和照明......

代码:
导入java.io. *;
导入javax.swing。*;
导入java.awt。*;
导入java.awt.dimension;

公共班级
{
   公共静态空白主(String [] args)
    {
 //与标题栏的标题初始化
 Jframe Frame =新JFRAME("3D Engine");
 Dimension screensize = frame.gettoolkit().getScreenSize ();
 frame.setBounds (0, 0,
  800, 600);
 Frame.SetDefaultCloseoperation.(JFrame.EXIT_ON_CLOSE);

 int w = frame.getbounds().width;
 INT H = FRAME.GETBOUNDS().height;

 Frame.getContentPane.().add (new DrawView (800, 600));
 frame.show ();
    }
}


Class DrawView扩展了Canvas
{
   公共静态obj3d obj = new obj3d();
   私人图像Bimage;
   私人图形BG;
   私人图形2dg2d;
    private int w, h;


    DrawView (int宽,int height)
    {
 super ();
 obj.initfile ("c:\\sphh2.raw");
 //obj.Scale (.1, .1, .1);
 obj.zoom = 25000;
 obj.camera [2] = 2000;
 obj.Camera [1] = 10;
 setBackground (Color.black);
 w = width;
 h = height;
    }


    public void paint (Graphics g)
    {
 g2d = (Graphics2D) g;
 Bimage = createImage.(w, h);
 BG = Bimage.getGraphics.();
 //bg.setXORMode (Color.white);
 for (double i = 0 ; i < 360 ; i += 1)
 {
     obj.RotXZ (1);
     obj.RotYZ (1);
     //obj.RotYZ (2);
     obj.Render (bg);

     updateScreen ();
     bg.setColor (Color.black);
     bg.fillRect (0, 0, w, h);

 }
 bg.dispose ();
 bImage.flush ();
    }


   私人无效更新屏幕 ()
    {
 g2d.drawImage (bImage, 0, 0, this);
    }
}

类obj3d
{
   公共静态颜色[] =新颜色[255];
   公共静态双重胶囊[] [] [];
   公共静态int polyindex [];
   公共静态双中心[];
   公共静态int maxpoly = 0;
   公共静态双变焦= 10000;
   公共静态双[]相机=新双[6];

   私人双人COSD(double degrees)
    {
 return Math.cos ((3.141592653 *学位) / 180);
    }


   私人双人拳(double degrees)
    {
 return Math.sin ((3.141592653 *学位) / 180);
    }




   私人无效旋转(int索引,int polynumber,双rotaion)
    {
 Double OriginX = Centre [0];
 Double Originy = Center [1];
 双第二次级=倾角[指数] [Polynumber] [0];
 Double DigkeParty =倾角[指数] [Polynumber] [1];
 double tempx = (((OriginX - 第二个零售) * cosd (Rotaion)) + ((origniny - 第二个休息室) * sind (Rotaion)));
 double tempy = (((origniny - 第二个休息室) * cosd (Rotaion)) - ((OriginX - 第二个零售) * sind (Rotaion)));
 第二个= originy - tempy;
 secondpartx = originX - tempx;
 胶剂[指数] [Polynumber] [0] =第二级;
 胶剂[指数] [Polynumber] [1] =第二次;
    } //*/


   私人void rotatexz.(int索引,int polynumber,双rotaion)
    {
 Double OriginX = Centre [0];
 Double Originy = Center [2];
 双第二次级=倾角[指数] [Polynumber] [0];
 Double DigkeParty =倾角[指数] [Polynumber] [2];
 double tempx = (((OriginX - 第二个零售) * cosd (Rotaion)) + ((origniny - 第二个休息室) * sind (Rotaion)));
 double tempy = (((origniny - 第二个休息室) * cosd (Rotaion)) - ((OriginX - 第二个零售) * sind (Rotaion)));
 第二个= originy - tempy;
 secondpartx = originX - tempx;
 胶剂[指数] [Polynumber] [0] =第二级;
 胶囊[指数] [Polynumber] [2] =第二次;
    }


   私人无效旋转yz.(int索引,int polynumber,双rotaion)
    {
 Double OriginX = Center [1];
 Double Originy = Center [2];
 Double DigkePartx =倾角[指数] [Polynumber] [1];
 Double DigkeParty =倾角[指数] [Polynumber] [2];
 double tempx = (((OriginX - 第二个零售) * cosd (Rotaion)) + ((origniny - 第二个休息室) * sind (Rotaion)));
 double tempy = (((origniny - 第二个休息室) * cosd (Rotaion)) - ((OriginX - 第二个零售) * sind (Rotaion)));
 第二个= originy - tempy;
 secondpartx = originX - tempx;
 胶剂[指数] [多元素] [1] =第二次临时;
 胶囊[指数] [Polynumber] [2] =第二次;
    }




   私人void cameraxz.(int索引,int polynumber,双rotaion)
    {
 Double OriginX = Camera [0];
 Double Originy = Camera [2];
 双第二次级=倾角[指数] [Polynumber] [0];
 Double DigkeParty =倾角[指数] [Polynumber] [2];
 double tempx = (((OriginX - 第二个零售) * cosd (Rotaion)) + ((origniny - 第二个休息室) * sind (Rotaion)));
 double tempy = (((origniny - 第二个休息室) * cosd (Rotaion)) - ((OriginX - 第二个零售) * sind (Rotaion)));
 第二个= originy - tempy;
 secondpartx = originX - tempx;
 胶剂[指数] [Polynumber] [0] =第二级;
 胶囊[指数] [Polynumber] [2] =第二次;
    }


   私人void camerayz.(int索引,int polynumber,双rotaion)
    {
 Double OriginX = Camera [1];
 Double Originy = Camera [2];
 Double DigkePartx =倾角[指数] [Polynumber] [1];
 Double DigkeParty =倾角[指数] [Polynumber] [2];
 double tempx = (((OriginX - 第二个零售) * cosd (Rotaion)) + ((origniny - 第二个休息室) * sind (Rotaion)));
 double tempy = (((origniny - 第二个休息室) * cosd (Rotaion)) - ((OriginX - 第二个零售) * sind (Rotaion)));
 第二个= originy - tempy;
 secondpartx = originX - tempx;
 胶剂[指数] [多元素] [1] =第二次临时;
 胶囊[指数] [Polynumber] [2] =第二次;
    }


   私人无效摄影师(int索引,int polynumber,双rotaion)
    {
 Double OriginX = Camera [0];
 Double Originy = Camera [1];
 双第二次级=倾角[指数] [Polynumber] [0];
 Double DigkeParty =倾角[指数] [Polynumber] [1];
 double tempx = (((OriginX - 第二个零售) * cosd (Rotaion)) + ((origniny - 第二个休息室) * sind (Rotaion)));
 double tempy = (((origniny - 第二个休息室) * cosd (Rotaion)) - ((OriginX - 第二个零售) * sind (Rotaion)));
 第二个= originy - tempy;
 secondpartx = originX - tempx;
 胶剂[指数] [Polynumber] [0] =第二级;
 胶剂[指数] [Polynumber] [1] =第二次;
    } //*/


    public void RotXZ (double rot)
    {
 for (int i = 0 ; i < maxPoly ; i++)
 {

     for (int j = 0 ; j < 3 ; j++)
     {
  rotateXZ (i, j, rot);
     }
 }
    }


    public void RotYZ (double rot)
    {
 for (int i = 0 ; i < maxPoly ; i++)
 {

     for (int j = 0 ; j < 3 ; j++)
     {
  rotateYZ (i, j, rot);
     }
 }
    }


    public void RotXY (double rot)
    {
 for (int i = 0 ; i < maxPoly ; i++)
 {

     for (int j = 0 ; j < 3 ; j++)
     {
  rotateXY (i, j, rot);
     }
 }
    }


    public void MoveX (double rot)
    {
 for (int i = 0 ; i < maxPoly ; i++)
 {

     for (int j = 0 ; j < 3 ; j++)
     {
 胶囊[i] [j] [0] + rot;
     }
 }
 center [0] += rot;
    }


    public void MoveY (double rot)
    {
 for (int i = 0 ; i < maxPoly ; i++)
 {

     for (int j = 0 ; j < 3 ; j++)
     {
 胶囊[i] [j] [1] + =腐烂;
     }
 }
 center [1] += rot;
    }


    public void MoveZ (double rot)
    {
 for (int i = 0 ; i < maxPoly ; i++)
 {

     for (int j = 0 ; j < 3 ; j++)
     {
 胶剂[i] [j] [2] + rot;
     }
 }
 center [2] += rot;
    }


    public void CamXZ (double rot)
    {
 for (int i = 0 ; i < maxPoly ; i++)
 {

     for (int j = 0 ; j < 3 ; j++)
     {
  cameraXZ (i, j, rot);
     }
 }
    }


    public void CamYZ (double rot)
    {
 for (int i = 0 ; i < maxPoly ; i++)
 {

     for (int j = 0 ; j < 3 ; j++)
     {
  cameraYZ (i, j, rot);
     }
 }
    }


    public void CamXY (double rot)
    {
 for (int i = 0 ; i < maxPoly ; i++)
 {

     for (int j = 0 ; j < 3 ; j++)
     {
  cameraXY (i, j, rot);
     }
 }
    }


    public void Scale (双XX,双倍,双ZZ)
    {
 for (int i = 0 ; i < maxPoly ; i++)
 {

     for (int j = 0 ; j < 3 ; j++)
     {
 胶囊[i] [j] [2] =中心[2] +((胶囊[I] [J] [2] - 中心[2]) * zz);
 胶囊[i] [j] [1] =中心[1] +((胶囊[i] [J] [1] - 中心[1]) * yy);
 倾角[i] [j] [0] =中心[0] +((幽灵师[i] [j] [0] - 中心[0]) * xx);
     }
 }
    }


    public void zsort ()
    {
 Double Tempa [] = New Double [MaxPoly];
 for (int i = 0 ; i < maxPoly ; i++)
 {
     polyindex [i] = i;
  tempa [i] =  (致胶剂[i] [0] [2] +致胶剂[i] [1] [2] +致胶剂[i] [2] [2])/3;
 }
  sort (tempa);

    }


    public void Render (Graphics g)
    {
 int xpoly [] = new int [3];
 int ypoly [] = new int [3];
 zsort ();
 for (int i = 0 ; i < maxPoly ; i++)
 {

     for (int j = 0 ; j < 3 ; j++)
     {
  xPoly [j] = (int) ((胶剂[PolyIndex [I]] [J] [0] +相机[0]) / ((胶剂[PolyIndex [I]] [J] [2] +摄像头[2]) / zoom)) + 320;
  yPoly [j] = (int) ((胶剂[PolyIndex [I]] [J] [1] +摄像头[1]) / ((胶剂[PolyIndex [I]] [J] [2] +摄像头[2]) / zoom)) + 200;
     }


     g.setColor (colors [Math.abs ((int) ((致胶剂[聚index [i]] [0] [2] +致胶剂[聚index [i]] [1] [2] +致胶剂[PolyIndex [I]] [2] [2] / 100000))) % 255]);
     g.fillPolygon (xPoly, yPoly, 3);
     //            g.setColor (Color.green);
     //            g.drawPolygon (xPoly, yPoly, 3);

     //g.fillOval ((int) (center [0] / center [2]) + 320, (int) (center [1] / center [2]) + 200, 10, 10);

 }
    }



   公共静态缺口initfile(String filename)
    {

 String thisLine;
 double tempd;
 String temps = "";
 int polys, sd, line;
 polys = 0;
 sd = 0;
 line = 0;
 Camera [0] = 0;
 Camera [1] = 0;
 Camera [2] = 0;
 Camera [3] = 0;
 Camera [4] = 0;
 Camera [5] = 0;

 for (int i = 0 ; i < 255 ; i++)
 {
     颜色[i] =新颜色(i, i, i);
 }
 System.out.print ("Reading...");
 try
 {
     FileInputStream FIN =新FileInputStream(filename);

     try
     {
 datainputstream myinput = new datainputstream(fin);

  try
  {
      while ((这个线= myinput.readline.()) != null)
      {
   //System.out.println (thisLine);
   polys++;
      }
      System.out.println (polys);
  }
  catch (Exception e)
  {
      System.out.println ("Error: " + e);
  }
     }
     catch (Exception e)
     {
  System.out.println ("Error: " + e);
     }

 }
 catch (Exception e)
 {
     System.out.println ("failed to open file " + filename);
     System.out.println ("Error: " + e);
 }
 maxPoly = polys;
 双立方体[] [] [] =新的Double [maxpoly] [3] [3];
 polyindex = new int [maxpoly];
 Polylist = New Double [MaxPoly] [3] [3];
 中心=新的Double [3];


 try
 {
     FileInputStream FIN =新FileInputStream(filename);

     try
     {
 datainputstream myinput = new datainputstream(fin);

  try
  {
      System.out.println ("initializing...");
      while ((这个线= myinput.readline.()) != null)
      {
   for (int i = 0 ; i < thisLine.length () ; i++)
   {
       if (thisLine.charAt (i) != ' ')
       {
   temps + = thisine.charat(i);
       }
       else
       {

    cube [line] [(sd / 3)] [sd%3] = double.valueof(temps);
    temps = "";
    sd++;
       }
   }
   sd = 0;
   line++;

   //System.out.println (thisLine);
      }
  }
  catch (Exception e)
  {
      System.out.println ("Error: " + e);
  }
     }
     catch (Exception e)
     {
  System.out.println ("Error: " + e);
     }

 }
 catch (Exception e)
 {
     System.out.println ("failed to open file " + filename);
     System.out.println ("Error: " + e);
 }

 System.out.println ("Done!");
 //        System.out.println("Index : "+maxPoly);
 for (int i = 0 ; i < maxPoly ; i++)
 {
     for (int j = 0 ; j < 3 ; j++)
     {
  for (int k = 0 ; k < 3 ; k++)
  {
     胶剂[i] [j] [k] =立方体[i] [j] [k]。doublevalue();
      //System.out.println("Index : "+i);
  }
     }
 }


 center [0] = 0;
 center [1] = 0;
 center [2] = 0;
 for (int i = 0 ; i < maxPoly ; i++)
 {
     中心[0] + = polylist [i] [0] [0];
     中心[0] + =倾角[i] [1] [0];
     中心[0] + =倾角[i] [2] [0];

     中心[1] + =倾角[i] [0] [1];
     中心[1] + =倾角[i] [1] [1];
     中心[1] + =倾角[i] [2] [1];

     中心[2] + =倾角[i] [0] [2];
     中心[2] + =倾角[i] [1] [2];
     中心[2] + =倾角[i] [2] [2];
 }

 中心[0] / = maxpoly * 3;
 中心[1] / = maxpoly * 3;
 中心[2] / = maxpoly * 3;
    }

   ///////////////////////////////////////////////////////////// ///////////////////////////
   私人静态void Quicksort(双A [],INT L,INT R.)
    {
 int M = 4;
 int i;
 int j;
 double v;

 if ((r - l) > M)
 {
     i = (r + l) / 2;
     if (a [l] > a [i])
  swap (a, l, i);               
     if (a [l] > a [r])
  swap (a, l, r);
     if (a [i] > a [r])
  swap (a, i, r);

     j = r - 1;
     swap (a, i, j);
     i = l;
     v = a [j];
     for (;;)
     {
  while (a [++i] < v)
      ;
  while (a [--j] > v)
      ;
  if (j < i)
      break;
  swap (a, i, j);
     }
     swap (a, i, r - 1);
     QuickSort (a, l, j);
     QuickSort (a, i + 1, r);
 }
    }


   私人静态空隙(双A [],INT I,INT J.)
    {
 double T;
 int T2;
 T = a [i];
 a [i] = a [j];
 a [j] = T;
 T2 = polyindex [i];
 PolyIndex [i] = PolyIndex [J];
 polyindex [j] = T2;
    }


   私人静电void插入(双A [],int lo0,int hi0)
    {
 int i;
 int j;
 double v;

 for (i = lo0 + 1 ; i <= hi0 ; i++)
 {
     v = a [i];
     j = i;
     while ((j > lo0) && (a [j - 1] > v))
     {
  a [j] = a [j - 1];
  j--;
     }
     a [j] = v;
 }
    }


   公共静态空白排序(double a [])
    {
     QuickSort (a, 0, a.length - 1);
     InsertionSort (a, 0, a.length - 1);
    }
   ///////// / ////////////////////////////////////////////////////////// ////////////////////////////
}
从上一个显示帖子:   
    指数 -> 编程,Java. -> java. 提交
查看上一个主题 告诉一个朋友可打印的版本下载主题利率主题订阅本主题私人信息刷新页面 查看下一个主题

12  [ 19 Posts ]
转到页面 1, 2   下一个
跳到:    


Style:  
搜索: