ImPlot3D adalah perpanjangan dari Dear ImGui yang menyediakan fungsionalitas plot 3D berkinerja tinggi yang mudah digunakan. Terinspirasi oleh ImPlot, ini menghadirkan API yang familier dan intuitif bagi pengembang yang sudah mengenal ImPlot. ImPlot3D dirancang untuk merender plot 3D dengan penanda, garis, permukaan, dan jerat yang dapat disesuaikan, memberikan solusi ideal untuk aplikasi yang memerlukan representasi visual data 3D.
- Render dengan akselerasi GPU
- Beberapa jenis plot:
- Plot garis
- Menyebarkan plot
- Plot permukaan
- Plot segi empat
- Plot segitiga
- Plot jala
- Plot teks
- Memutar, menggeser, dan memperbesar plot 3D secara interaktif
- Beberapa opsi gaya plot: 10 jenis penanda, ukuran penanda yang dapat disesuaikan, bobot garis, warna garis luar, warna isian, dll.
- 16 peta warna bawaan dan dukungan untuk peta warna yang ditambahkan pengguna
- Judul plot opsional, label sumbu, dan label kisi
- Legenda opsional dan dapat dikonfigurasi dengan tombol sakelar untuk menampilkan/menyembunyikan item plot dengan cepat
- Gaya default berdasarkan tema ImGui saat ini, atau gaya plot yang sepenuhnya disesuaikan
API ImPlot3D dirancang agar terasa sangat mirip dengan Dear ImGui dan ImPlot. Anda mulai dengan menelepon ImPlot3D::BeginPlot()
untuk menginisialisasi plot 3D, diikuti dengan memplot berbagai data menggunakan PlotX
fungsi (misalnya, PlotLine()
, PlotScatter()
, PlotSurface()
). Akhirnya, Anda mengakhiri plot dengan ImPlot3D::EndPlot()
.
float x_data(1000) = ...;
float y_data(1000) = ...;
float z_data(1000) = ...;
ImGui::Begin("My Window");
if (ImPlot3D::BeginPlot("My Plot")) {
ImPlot3D::PlotLine("My Line Plot", x_data, y_data, z_data, 1000);
ImPlot3D::PlotScatter("My Scatter Plot", x_data, y_data, z_data, 1000);
...
ImPlot3D::EndPlot();
}
ImGui::End();
Contoh komprehensif yang menampilkan fitur ImPlot3D dapat ditemukan di implot3d_demo.cpp
. Tambahkan file ini ke proyek Anda dan telepon ImPlot3D::ShowDemoWindow()
di loop pembaruan Anda. Demo ini menyediakan berbagai macam contoh plot 3D, yang berfungsi sebagai referensi untuk membuat berbagai jenis plot 3D. Demo ini diperbarui secara berkala untuk mencerminkan fitur dan jenis plot baru, jadi pastikan untuk meninjaunya kembali pada setiap rilis!
Untuk mengintegrasikan ImPlot3D ke dalam aplikasi Anda, ikuti langkah-langkah berikut:
- Pastikan Anda memiliki lingkungan Dear ImGui yang berfungsi. ImPlot3D hanya membutuhkan Dear ImGui untuk berfungsi dan tidak bergantung pada ImPlot.
- Tambahkan file sumber berikut ke proyek Anda:
implot3d.h
,implot3d.cpp
,implot3d_internal.h
,implot3d_items.cpp
. Secara opsional, sertakanimplot3d_demo.cpp
untuk contoh danimplot3d_meshes.cpp
untuk mendukung jerat yang sudah dimuat sebelumnya. - Buat dan hancurkan ImPlot3DContext bersama ImGuiContext Anda:
ImGui::CreateContext();
ImPlot3D::CreateContext();
...
ImPlot3D::DestroyContext();
ImGui::DestroyContext();
Anda sekarang siap untuk mulai membuat plot dalam 3D!
ImGui yang terhormat, secara default, menggunakan pengindeksan 16-bit, yang mungkin menyebabkan masalah dengan visualisasi 3D kepadatan tinggi seperti permukaan atau jerat yang rumit. Hal ini dapat menyebabkan kegagalan pernyataan, pemotongan data, atau gangguan visual. Untuk menghindari masalah ini, disarankan untuk:
- Opsi 1: Aktifkan indeks 32-bit dengan menghapus komentar
#define ImDrawIdx unsigned int
di file ImGui imconfig.h Anda. - Opsi 2: Pastikan penyaji Anda mendukung
ImGuiBackendFlags_RendererHasVtxOffset
bendera. Banyak backend ImGui resmi yang sudah mendukung fungsi ini.
Meskipun ImGui unggul dalam membangun UI, ia tidak memiliki alat untuk visualisasi data 3D. ImPlot3D mengisi kesenjangan ini, menawarkan perpustakaan real-time yang ringan untuk pembuatan plot 3D, dirancang dengan mempertimbangkan interaktivitas dan kemudahan penggunaan.
Terinspirasi oleh ImPlot, ImPlot3D menyediakan API serupa, sehingga memudahkan pengguna ImPlot untuk mengadopsinya. Ini berfokus pada visualisasi 3D tingkat aplikasi secara real-time untuk debugging, simulasi, dan analisis data, dengan kinerja sebagai prioritas.
ImPlot sangat bagus untuk visualisasi 2D; ImPlot3D memperluas kekuatan ini ke 3D, menawarkan kesederhanaan dan kecepatan yang sama.
API untuk ImPlot3D dikomentari secara menyeluruh implot3d.h
dan file demo yang komprehensif, implot3d_demo.cpp
menampilkan semua fitur. Anda dianjurkan untuk menjelajahi file demo karena diperbarui secara berkala untuk mencerminkan fungsionalitas baru. Selain itu, jika Anda familiar dengan ImPlot, Anda akan melihat banyak kesamaan dalam pola penggunaan.
ImPlot3D sangat terinspirasi oleh ImPlot, jadi jika Anda sudah familiar dengan ImPlot, Anda akan merasa seperti di rumah sendiri. Namun, ImPlot3D dibuat khusus untuk visualisasi 3D, menawarkan rotasi 3D interaktif, panning, dan penskalaan.
Tidak. ImPlot3D adalah perpustakaan mandiri dan tidak bergantung pada ImPlot. Anda hanya perlu Dear ImGui untuk memulai.
Meskipun Anda dapat memutar tampilan 3D agar sejajar dengan bidang 2D, ImPlot jauh lebih cocok untuk memvisualisasikan data 2D. ImPlot3D dirancang khusus untuk pembuatan plot dan interaksi 3D, jadi kami menyarankan penggunaan ImPlot untuk semua kebutuhan visualisasi 2D Anda.
Sangat. ImPlot3D memungkinkan Anda mengubah gaya plot, termasuk warna garis, ketebalan, opasitas isian, dan ukuran penanda. Anda juga dapat menggunakan peta warna untuk permukaan dan menyesuaikan label sumbu, gaya kisi, dan warna latar belakang.
Tidak saat ini. Anda dapat menggunakan alat tangkapan layar OS Anda untuk menyimpan plot. ImPlot3D dirancang untuk visualisasi dan interaksi waktu nyata, bukan untuk membuat render berkualitas publikasi. Untuk keluaran berkualitas publikasi, pertimbangkan untuk mengekspor data Anda ke alat rendering 3D khusus.
ImPlot3D mengutamakan interaktivitas dan kinerja waktu nyata. Jika Anda memerlukan visualisasi berkualitas tinggi, gunakan ImPlot3D untuk eksplorasi awal, lalu beralih ke alat serupa MATLAB, matplotlibatau ParaView untuk hasil akhir.
Proyek ini dilisensikan di bawah Lisensi MIT – periksa LISENSI untuk detailnya.