jMonkeyEngine szybkie wczytywanie modeli 3D

jMonkeyEngine Logo
jMonkeyEngine Logo

Tworząc wizualizacje , gry lub innego rodzaju animacje spotkamy się z koniecznością wczytania jakiegoś rodzaju modeli 3D. Nie inaczej jest w przypadku silnika jMonkeyEngine, pytanie jednak brzmi jak najszybciej wczytać takie modele? Najlepiej jest skorzystać z formatu udostępnionego przez jME. Taka zmiana formatu pozwoli na zaoszczędzenie sporej ilości czasu potrzebnej na parsowanie wczytywanych modeli. Poniżej prezentuję kod dzięki któremu wczytany model w formacie .obj, możemy wyeksportować do formatu .dat :


URL model = Court.class.getClassLoader().getResource(
 "model/Court.obj");
 Spatial courtNode = null;
 try {
 FormatConverter converter = new ObjToJme();
 converter.setProperty("mtllib", model);
 ByteArrayOutputStream BO = new ByteArrayOutputStream();
 converter.convert(model.openStream(), BO);
 courtNode = (Spatial)BinaryImporter.getInstance().load(new ByteArrayInputStream(BO
 .toByteArray()));
 } catch (IOException e) { // Just in case anything happens
 logger.logp(Level.SEVERE, this.getClass().toString(),
 "simpleInitGame()", "Exception", e);
 System.exit(0);
 }

Czytaj dalej jMonkeyEngine szybkie wczytywanie modeli 3D

Wizualizacja 3D z wykorzystaniem jMonkeyEngine – instrukcja

jMonkeyEngine Logo
jMonkeyEngine Logo

Wizualizacja 3D z wykorzystaniem jMonkeyEngine v2 ( silnik graficzny napisany w Javie ), może przysporzyć paru drobnych problemów przy próbie stworzenia aplikacji standalone. Problem pojawiły się przy próbie podlinkowania natywnych bibliotek.

Wizualizacja 3D - Java biblioteki
Wizualizacja 3D - Java biblioteki

java.lang.UnsatisfiedLinkError: no lwjgl in java.library.path

Poniżej przedstawiłem jeden ze sposobów rozwiązania tego problemu ( system Windows ).

Czytaj dalej Wizualizacja 3D z wykorzystaniem jMonkeyEngine – instrukcja

Eksport dataTable do pliku CSV

Drobna funkcja ułatwiająca życie, czyli zapis danych z tabeli dataTable do pliku w formacie CSV( kolumny oddzielone tabulatorem, kodowanie UTF8 ).


 /// <summary>
 /// Obsługa zapisu danych z obiektu dataTable jako pliku CSV.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void zapiszDaneJakoCSV_Click(object sender, EventArgs e)
 {
 string Saved_File = "";

 SaveFileDialog saveFileDialog = new SaveFileDialog();
 saveFileDialog.Title = "Zapisz dane jako CSV";
 saveFileDialog.FileName = "Dane";
 saveFileDialog.Filter = "Plik .csv|*.csv";

 if (saveFileDialog.ShowDialog() == DialogResult.OK)
 {
 Saved_File = saveFileDialog.FileName;

 FileStream fs = new FileStream(Saved_File, FileMode.Create);
 StreamWriter sw = new StreamWriter(fs, Encoding.UTF8);

 int iColCount = obiektDataTable.Columns.Count;
 for (int i = 0; i < iColCount; i++)
 {
 sw.Write(obiektDataTable.Columns[i]);
 if (i < iColCount - 1)
 {
 sw.Write("\t");
 }
 }
 sw.Write(sw.NewLine);

 foreach (DataRow dr in obiektDataTable.Rows)
 {
 for (int i = 0; i < iColCount; i++)
 {
 if (!Convert.IsDBNull(dr[i]))
 {
 sw.Write(dr[i].ToString());
 }
 if (i < iColCount - 1)
 {
 sw.Write("\t");
 }
 }
 sw.Write(sw.NewLine);
 }
 sw.Close();

 }
 }

Powiększanie i przewijanie wykresów C#

Czyli mała ale bardzo przydatna rzecz, której znalezienie może zająć trochę czasu 🙂


 chartArea1.CursorX.IsUserEnabled = true;
 chartArea1.CursorX.IsUserSelectionEnabled = true;
 chartArea1.CursorY.IsUserEnabled = true;
 chartArea1.CursorY.IsUserSelectionEnabled = true;
 chart1.ChartAreas.Add(chartArea1);

Zoom and scroll chart in c#
Przykład przewijania/powiększania wykresów w C#

Przecinek w nazwie kolumny a red cross error na wykresie

Niedawno miałem nieprzyjemność borykania się z problemem „czerwonego krzyża” wyświetlanego na wykresach ( Chart , System.Windows.Forms.DataVisualization.Charting ). Błąd ten pojawia się m.in. przy problemach z przetworzeniem danych wejściowych. W moim przypadku przyczyną problemów były przecinki w nazwach kolumn obiektu DataTable, który to ustawiałem jako DataSource dla wykresu.

Dokładnie: Wartości w nazwach kolumn, które znajdowały się po przecinku były „ignorowane” w DataSource. Skutkiem tego nazwy kolumn w DataSource nie zgadzały się z tymi w DataTable, w moim przypadku parę kolumn miało tę samą nazwę ( co jest oczywistym błędem).

red cross error csharp chart
🙂