Hệ mặt trời, tôi thực hiện mô phỏng nó ra sao!
January 8, 2021Thực ra đây là một trong những đồ án môn học của mình làm vào 7 năm trước, một bài tập lớn ứng dụng OpenGL vào mô phỏng hệ mặt trời trong môn học kỹ thuật đồ hoạ.
Bài viết này mình xin được tóm tắt quá trình mình xây dựng dựa trên trí nhớ hiện tại của mình, các bạn có thể tham khảo code chi tiết ở phần source code cuối bài viết nếu quan tâm.
Như bài viết trước mình đã đề cập thì OpenGL là một thư viện đồ hoạ, nó giúp bạn có thấy xây dựng những ứng dụng cũng như mô phỏng về đồ hoạ khá dễ dàng.
Bạn có thể đọc lại bài viết nói cụ thể hơn về OpenGL tại đây:
Ở đây mới đầu tiếp cận với OpenGL thì bạn nên tiếp cân theo từng bước đơn giản trước rồi mới phức tạp dần.
Đầu tiên thì bạn phải xây dựng được cái khung hình đồ hoạ mà khi bạn chạy chương trình nó có thể popup lên cho bạn một cái khung đen đen như bạn mở cửa sổ command line ý.
Tiếp đó, hãy vẽ một hình đơn giản, có thể là hình vuông, hình tròn, hình chữ nhật như những đứa trẻ tập vẽ trên cái khung mà bạn tạo được ở bước đầu tiên.
Sau khi vẽ được các hình cơ bản theo đúng ý của bạn rồi thì chúng ta hãy cùng tập tô, một màu xanh xanh, chấm thêm vàng vàng, và cuối cũng bạn cũng tô kín được các hình vẽ 2D mà bạn vẽ được bên trên.
Đến đây, dường như bạn chuyển từ cấp 1 lên cấp 2, bạn được học những hình vẽ không gian thay vì những hình vẽ 2 chiều trên một mặt phẳng. Vậy là bạn phải tư duy và vẽ nên những hình khối đầu tiên trong bộ môn khó nhằn này của mình. Mình tin chắc nếu đã làm được đến bước này bạn sẽ vô cùng hạnh phúc và hét lên “ơ rai ka”, mình thật là thiên tài 😄
Độ khó chưa dừng ở đây, bạn sẽ phải điều khiển những hình bạn vẽ có thể chuyển động được. Trước tiên là xoay quanh trục, trục x rồi trục y và trục z. Rồi xoay quanh tâm, xoay quanh một điểm bất kỳ. Vui hơn nữa là dịch chuyển tịnh tiến, dịch chuyển theo toạ độ mà bạn định sẵn. Trải nghiệm lúc này của bạn bắt đầu giống giống lập trình game rồi đó. Nhưng vấn đề phát sinh là bạn dịch chuyển phần A của hình thì bạn phải tính toán xem phần B dịch chuyển theo A đã đúng logic chưa. Bạn tưởng tượng có khi nào chân tay bản đi được một quãng được khá xa rồi mà cái đầu của bạn vẫn ở nguyên vị trí cũ khiến cho cái hình nó kéo dãn giống như anh chàng luffy vậy. Thật buồn cười lắm thay.
Khi bạn di chuyển được rồi thì bạn nghĩ đến việc gán nó vào một trong những sự kiện, bàn phím, hay là chuột, hay đơn giản là timer tự động di chuyển với một thời gian nhất định phải không nào. Thật là thú vị.
Bước cuối cùng là mình bọc ảnh vào những khối hình mà mình đã vẽ thay vì tô màu đơn sắc để giúp đồ hoạ của bạn thêm phần mượt mà và bắt mắt hơn. Bước này cũng không hề đơn giản khi bạn phải chọn hoặc thiết kế những tấm ảnh và loại ảnh phù hợp với hình khối của bạn. Chắc bạn chẳng hề muốn tấm bản đồ trái đất được dàn phẳng sau khi bọc lên một khối hình cầu lại không phân biệt được đâu là cực bắc đâu là cực nam phải không ạ.
Trên đây là những bước trong quá trình xây dựng một hệ mặt trời của mình vào những năm tháng mài đít trên ghế nhà trường. Hi vọng có thể giúp các bạn hoặc các em có thể hình dung ra được phần nào quá trình học môn học khó nhằn mà đầy thú vị này.
Xem video để hình dung nhé
Còn đây là source code và báo cáo của toàn bộ chương trình
# http://megaurl.in/I0FO