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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354
|
# rgl 1.3.34
* The WebGL code did not handle the case of lit objects
with no lights properly. Now they display the emission
color only. (Issue #494).
* Several deprecated functions have been made defunct.
* Some bad links from the vignettes have been fixed.
* `rglwidget()` now detects Positron and modifies the
display so it appears properly in the PLOTS window.
# rgl 1.3.31
* macOS Tahoe 26.1 does not support `rgl` displays. Give
a more informative failure warning.
* Support for classes defined in the `tripack` package
has been dropped at the request of CRAN.
* Added the `latex3d()` function to draw LaTeX text using the
`xdvir` package.
* Both `plotmath3d()` and `latex3d()` now use default
`cex = par3d("cex")`, and have new argument `polygon_offset`.
## Bug fixes
* `arrow3d(type = "extrusion")` was broken by the changes to triangulation in version 1.3.16.
* Changes last year to `writePLY()` introduced an error
in some cases (issue #489).
* Many deprecated functions have been made defunct.
# rgl 1.3.24
* The `shapelist3d()` function did not handle material names
properly (issue #462).
* The `markdown` package no longer supports `rgl`, so the change
in `rgl` 1.3.1 to use it has been reverted. This means Pandoc
is once again necessary to build the vignettes.
* Links from help pages to vignettes have been repaired
and added, using new `\HTMLVignette{}{}{}` and
`\HTMLVignetteCRAN{}{}{}{}` macros.
* To support those macros, two environment variables are used.
`VignetteRdPath` (default `"../html/"`) should be the lead-in of
the URL for the HTML version of an Rd help file referenced from a
vignette, and `RdVignettePath`
(default `"../doc/"`) should be the lead-in of the URL for a vignette
referenced from an Rd file.
* `abclines3d()` did not handle multiple colors properly, sometimes causing a crash (issue #476).
* The `COPYING.GL2PS` file containing the license for
the code used in `rgl.postscript()` has been moved so
that it will be installed at the top level of the
package.
# rgl 1.3.18
* Internal code changes to satisfy `R CMD check` requirements.
* Some memory leaks reported in issue #451 have been fixed.
* The OpenGL "glad" loader has been updated to version 2.0.8.
* A number of implicit type conversions have been made explicit
to avoid compiler warnings.
# rgl 1.3.17
## Bug fix
* The previous fix for `rgl.init()` introduced a new possible
segfault for users who had DISPLAY unset or set to a non-existent
server.
# rgl 1.3.16
## Bug fixes
* `triangulate()` now uses the `earcut` library
from https://github.com/mapbox/earcut.hpp, which
should be faster and more reliable than the
previous R implementation.
* In cases where the X11 server did not provide sufficient
support, `rgl.init()` could sometimes segfault. That has
been fixed, and warning messages have been made more
informative.
# rgl 1.3.14
## Minor changes
* `rgl.incrementID()` has been added.
* An example using log axes has been added to the
help page for `axes3d()`.
## Bug fixes
* `clear3d("all")`, calling `bg3d()` on the root
subscene, and some cases of `pop3d()` involving the
background could create a leak of a background object
(issue #439). For back compatibility of saved results, these cases
still increment the object ID number, but don't
actually create a new object.
* `rglwidget()` displays didn't support objects with
`smooth = FALSE`.
# rgl 1.3.12
## Minor changes
* `readSTL()` can now read (some) ASCII format STL files.
* The configure script has had minor changes, and autoconf
support files have been updated.
* `uname` is no longer used during startup (PR #435
submitted by Jonathon Love).
## Bug fixes
* Background plots did not always appear (issue #421).
* Changing the background resulted in an additional background
object instead of replacing the current one.
* Colors weren't handled correctly by `writePLY()` (issue #425).
* `bbox3d()` objects ignored the `xlen`, `ylen` and `zlen`
settings when rendered using `rglwidget()` (issue #415).
* In certain cases, the `WebGL` vignette started with the
mouse mode set to "selecting".
* The `rglwidget()` function gets a new argument `fastTransparency`
which makes WebGL mimic the `rgl` device when drawing transparent
objects. The default value is `TRUE` unless option
`rgl.fastTransparency` is set to `FALSE`.
* `writeSTL()` now writes `endsolid`, which is required by some apps.
# rgl 1.3.1
## Major changes
* `sprites3d()` now supports plotting different 3D symbols
at each location (issue #406).
## Minor changes
* ARIA support now declares `rgl` scenes with `role = "img"`.
* The vignettes in this package now use
`markdown::html_format`, so they no longer require Pandoc
(though Pandoc-using output formats like `html_document` will still be supported).
* Christophe Geuzaine's GL2PS library (used by `rgl.postscript()`)
updated to version 1.4.2, and blending (transparency)
has been enabled in formats that support it.
* The `Makevars.ucrt` file has been changed for compatibility
with an upcoming change to Windows Rtools. (Pull request #412 submitted by Tomas Kalibera).
## Bug fixes
* The ARIA support caused `htmlwidgets::saveWidget()` to fail when
run in a Shiny session.
* `text3d()` and `mtext3d()` did not pass the `cex` argument to
`plotmath3d()` (pull request #384).
* `polygon3d()` failed when given exactly 3 points (issue #388).
* `snapshot3d()` failed on Windows with some versions of `webshot2` (issue #391).
* Fixed issues caused by misuse of `dev.off()` using new function
`safe.dev.off()`.
* Fixed issue with `warning()` call reported by CRAN.
* Smooth shapes were not rendered correctly by `rglwidget()`.
This was especially noticeable for spheres with `fov = 0`, but was present in other cases as well (issue #401).
* `textype = "alpha"` was not rendered correctly by `rglwidget()` (issue #408).
* `setUserCallbacks()` and related functions failed when
the `subscene` argument was anything other than the root
subscene.
# rgl 1.2.1
## Major changes
* Support for non-PNG textures has been added. Currently
supported: JPEG files and any other object
for which `grDevices::as.raster()` works, e.g. matrices.
(Fixes issue #196.)
## Minor changes
* Support for "alt" text has been added to `rglwidget()`.
Full support in R Markdown or `knitr` requires a `knitr` update
to version 1.42.12 or newer.
* Some of the tests have been relaxed slightly so they
shouldn't trigger errors on the M1Mac test platform.
* Internally, the C++ code has dropped the use of the internally
defined `String` type, settling on `std::string` instead.
* `subdivision3d()`, `clipMesh3d()` and related functions now
(optionally) record the original faces associated with each new one
in a `mesh$tags` addition to the output.
## Bug fixes
* The `Makevars.win` file was being produced incorrectly on
older Windows versions.
* `rgl.window2user()` did not work correctly when multiple panes
were showing. This caused `arrow3d()` to fail in some panes
(issue #354).
* `selectpoints3d()` had a typo which was revealed by
warnings in recent R versions.
* `getShaders()` was broken in 1.1.3.
* `arc3d()` can now handle "arcs" that are straight lines along
a radius (issue #357).
* Spheres did not show textures correctly (issue #360).
* `hover3d()` failed to display default labels in R (issue #362).
* `shade3d()` didn't handle meshes with a mix of triangles and
quads properly when `meshColor == "faces"`.
* `subdivision3d()` and related functions now handle colors
properly.
* `addNormals()` sometimes gave `NaN` values due to rounding
error (issue #372).
* `arc3d()` sometimes missed plotting the last segment of the arc (issue #369).
* `R_NO_REMAP` has been defined and header includes have been
rearranged to prevent conflict between R internals and C++17
library. (Thanks to Prof. B. D. Ripley and G. Csardi for
suggested fixes.)
# rgl 1.1.3
## Major changes
* A new function `hover3d()` has been added to display
"hover hints": labels next to points when the mouse
passes near them.
* A new material property `"texmode"` has been added
to control how textures are applied. The default is `"modulate"`,
consistent with previous versions. If set to `"replace"`,
the texture is displayed without any lighting effects or dependence
on the original color of the surface.
* Many of the demos have been moved to a new vignette called
`demos`.
* `rgl` now uses the `glad` loader which will eventually allow
access to newer OpenGL functions in systems that support them.
## Minor changes
* The `texenvmap = TRUE` material property is now supported
in WebGL.
* The method of including shader source code
has changed to work around a limitation in Jupyter.
* The default C++ standard is now accepted, rather
than requiring C++11. On R versions prior to R 4.2.0
C++11 is still requested.
## Bug fixes
* The `as.mesh3d.rglId()` and `as.triangles3d.rglId()` methods
and the `selectpoints3d()`, `writeOBJ()`, `writePLY()`
and `writeSTL()`
functions did not handle indices
in the objects they were processing (issue #293).
* Transparent planes were not always drawn properly
in WebGL (issue #300).
* `view3d()` now returns a `lowlevel()` result so that
it will be handled properly in WebGL vignettes with
auto printing.
* If `transform3d()` or `rotate3d()` changed the orientation
of a `mesh3d` object with normals, the normals ended up
with the wrong sign. (Reported by Stephane Laurent.)
* `scene3d()` (and hence `rglwidget()`) did not save
the normals for unlit objects. When the objects were
also indexed, this prevented proper calculation of
front and back. This is fixed, and a warning is
issued if normals are not provided when needed.
* It was possible to call `glVersion` before OpenGL was
initialized; this resulted in a segfault with the new
`glad` loader, and may have been the cause of some older crashes
as well. This has been fixed.
* `readOBJ()` did not handle comments properly.
* Sprites consisting only of line segments (as used
for example by `pch3d()`) caused rendering to fail in
`rglwidget()` (issue #316).
* Headers have been cleaned up to fix problems
identified by Rtools43.
# rgl 1.0.1
## Major changes
* The long promised deprecations of the `rgl.*` functions
have happened. Now deprecated: `rgl.abclines`,
`rgl.bbox`, `rgl.bg`, `rgl.clear`, `rgl.clipplanes`,
`rgl.close`, `rgl.light`, `rgl.lines`,
`rgl.linestrips`, `rgl.material`, `rgl.open`,
`rgl.planes`, `rgl.points`, `rgl.quads`,
`rgl.select3d`, `rgl.set`, `rgl.setAxisCallback`,
`rgl.sprites`, `rgl.surface`, `rgl.texts`,
`rgl.triangles`, and `rgl.viewpoint`.
* A vignette "Deprecating the `rgl.*` interface"
has been added.
* Also deprecated: `elementId2Prefix`, `writeWebGL`
## Minor changes
* Since `rgl.material` is deprecated and no
longer contains the list of material types in its
argument list, `rgl.material.names` and `rgl.material.readonly` have been
added.
* Similarly, `rgl.par3d.names` and `rgl.par3d.readonly`
contain lists of properties that may be set or queried
in `par3d()`.
* The flexibility improvements for `surface3d()` in
0.111.6 were incomplete.
* Argument `flip` has been added to `surface3d()` to allow
front and back to be switched.
# rgl 0.111.6
## Minor changes
* Added a panning example to the help page for `setUserCallbacks()`.
* Replaced all calls to `sprintf` from C/C++ code with calls to
`snprintf`.
* `surface3d` and `rgl.surface` are now more flexible,
allowing any of the 3 coordinates to be a vector or matrix
as long as at least one is a matrix.
* `material3d` can now specify an `id` to query properties
for individual objects.
* Since `rgl.material` is soon to be deprecated and no
longer contain the list of material types in its
argument list, `rgl.material.names` and `rgl.material.readonly` have been
added.
* Similarly, `rgl.par3d.names` and `rgl.par3d.readonly`
contain lists of properties that may be set or queried
in `par3d()`.
* Made some examples conditional on interactive use
to save time on CRAN.
## Bug fixes
* Default mouse modes used when a window is opened by an `rgl.*`
call (which is not recommended!) now match
the defaults in `rgl::r3dDefaults`.
* Missing values could cause `surface3d()` to segfault.
* The C source code for `gl2psGetFileFormat` missed declaring
a prototype.
# rgl 0.110.2
## Major changes
* Material property `"blend"` has been added, to allow
various kinds of blending for semi-transparent objects
(issue #245).
## Minor changes
* The `Buffer` object now handles reading of sparse
accessors.
* Low level drawing of primitives has been made more
memory efficient. This is only likely to make a
noticeable change with very large objects, where R
was running out of memory because of unnecessary
duplication. (Related to issue #260.)
* Recycling of x, y and z vectors in several functions
is more consistent.
* The `polygon3d()` function now chooses coordinates
automatically, as `triangulate()` does (PR #262.)
* The `mtext3d()` and related functions such as
`title3d()` now accept language objects
other than expressions, as `plotmath3d()` always has
(issue #273).
## Bug fixes
* The bounding box could be calculated incorrectly
if data all had large values (issue #250).
* Shiny displays failed to load the shaders (issue #249).
* `transform3d()` failed due to missing argument (issue #253).
* `readOBJ()` is now more flexible in what kinds of
separators it will accept. (issue #258).
* Failure to initialize could cause a segfault.
* On non-macOS platforms, gray-scale textures failed
to display, with a message about an invalid enumerant.
* The third coordinate for `adj` that was added in 0.108.3
was not rendered properly in `rglwidget()` displays of
text. This sometimes caused text to disappear when it
was near the far limit of the display (issue #269).
* The X11 error fix in 0.109.6 could result in R
freezing in `Rcmdr`.
* Low level drawing functions are now more consistent
about returning an invisible `NULL` if asked to plot zero
items, rather than raising an error or crashing (issue #274).
* Calling `axis3d()` with no ticks or labels no longer triggers
an error, it now silently returns `NULL`.
# rgl 0.109.6
## Minor changes
* `rglwidget()` displays now act on "pointer" events,
not just "mouse" events, so they should be more usable
on touch screens and tablets (PR #240).
## Bug fixes
* Plotting `scene3d()` objects didn't handle suppressed
axes properly, drawing the default axis instead (issue
#241).
* On some systems using X11, `rgl` would segfault when
the "fixed" font was not found.
* X11 errors could cause R to abort.
# rgl 0.109.2
## Major changes
* Changes to support glTF animation:
- Handling of `embedding = "modify"` for the model matrix
has changed. Now the centering step is only done for
`embedding = "replace"`. In addition, various bugs
have been fixed.
- If a subscene has no lights defined, the lights from the parent
are used.
- `plot.rglscene()` now ends with the root subscene as
current. It also allows specification of `open3d()`
parameters in a list.
- The `MATn` types in `Buffer` are returned as arrays with
dim `c(n, n, count)`.
- The `plot3d.rglscene` method now passes `...` to `open3d()`.
- The `setUserShaders()` function now allows arrays of 4x4 matrices as "uniforms", and allows additional textures to be specified.
* `sprites3d()` now has the option of
`rotating = TRUE`, to allow 3D sprites to rotate with
the scene.
* Added `getShaders()` function to get shaders used in WebGL.
* Now detects if `rgl` is running within `reprex::reprex()`
and if so arranges that a screenshot will be included in the
output.
* Added default shaders to be used in `rglwidget()`, rather than
constructing them on the fly. This incompatibly affects the use
of lights and clipping planes with user shaders: their data
is now stored in arrays rather than multiple numbered variables.
## Minor changes
* Now that `pkgdown` 2.0.0 has been released, a number
of internal workarounds to support the development version
have been removed.
* Added `as.mesh3d()` methods for `"rglsubscene"` and `"rglscene"`.
* `open3d()` now handles `useNULL` and `silent` arguments
passed in `params`.
* Controls passed to `playwidget()` may now include a
component specifying HTML dependencies.
* Added `rglwidgetClass.readAccessor()` method to let other
code use the buffering.
* Changed the internal organization of bounding box calculations.
* All functions that produce meshes now accept
material properties. Newly modified to do so using the `...`
argument: `cylinder3d()`, and `getBoundary3d()`.
* Updated the system requirements and installation instructions.
* Solid bounding box decorations now try harder to display 3 faces (issue #206).
* Now that `webshot2` is on CRAN, instructions for
installing it from Github have been removed.
* Sometimes `webshot2` snapshots are very slow, so
the default for the `webshot` argument to `snapshot3d()`
now depends on the `RGL_USE_WEBSHOT` environment
variable, using `TRUE` if it is unset. (Reported by Prof. B. D. Ripley.)
* If the Chrome browser is not found, `snapshot3d(webshot = TRUE)` now issues a warning and
reverts to using `rgl.snapshot()`.
* Buffers now use "normalized integers" to store
color or texture coordinate values that lie between 0
and 1 when it saves some space.
* At the request of CRAN, the `akima` package is no
longer suggested.
## Bug fixes
* `as.mesh3d.rglobject()` didn't handle objects with indices
properly.
* In WebGL, the front vs back calculation sometimes
got the wrong result (issue #164).
* `pop3d(tag = x)` did not always find the objects with `tag == x` if they were not in the current subscene.
* The default values for `front` and `back` in `rgl.material`
and `material3d` are now `"filled"`, as documented in some
places.
* The `fog` setting wasn't handled properly by `bg3d()`.
* Numerous cases of partial argument matching were fixed
(suggestion of Henrik Bengtsson in issue #170.)
* Argument `col` is accepted as a synonym for `color` in `material3d()` and `rgl.material()`.
* `planes3d()` objects were not displayed consistently
in `rgl` windows and WebGL displays, because the bounding
boxes were not computed consistently (issue #169).
* Some initialization wasn't done properly in Shiny apps,
so they failed after a redraw (issue #173).
* Buffers are now optional, as they don't work with
Shiny scene changes (also issue #173).
* The NULL device would sometimes miscalculate the
bounding box.
* `selectpoints3d(closest = TRUE)` selected too many points
when multiple objects were in the scene.
* Clearing nested subscenes could cause a segfault and crash.
* In `knitr` and `rmarkdown`, blank plots could be shown
when `par3d(skipRedraw=TRUE)` was set (issue #188).
* Objects drawn with `sprites3d()` weren't lit correctly
in WebGL (issue #189).
* Objects with textures were sometimes drawn more than once, both
before the texture loaded and after. This was most noticeable for
objects with user textures.
* Axis mode `"pretty"` got lost when scenes were redrawn.
* Tick labels were sometimes lost in WebGL displays and
`snapshot3d()` results (issue #197).
* The new material properties from 0.107.10 and 0.108.3
were not handled properly by `plotmath3d()`.
* `rglMouse()` did not set the default value of the drop-down
selector properly (issue #213).
* `merge.mesh3d()`, used by `filledContour3d()`, didn't handle
colors properly (issue #212).
* `bg3d(sphere = TRUE)` has been fixed (issue #207).
* Textures were not appearing on spheres, and front-back
differences weren't being rendered (issue #217).
* When "knitting" within RStudio under R 4.2.0 on
Windows, `rgl` scenes didn't appear (reported by
Dieter Menne.) A workaround has been added.
* In `rglwidget()`, axis labels were not always
displayed, and did not move with solid bounding box
decorations properly (issue #206).
* On some systems, `lines3d()` using both missing values
and transparency did not draw properly (issue #234,
originally reported by Gaspar Jekely).
* The `rglShared()` example failed when `crosstalk`
was uninstalled.
# rgl 0.108.3.2
## Bug fixes
* Changes introduced in 0.100.50 lacked checks; these caused
segfaults in Windows with R 4.2.0 and RStudio (issue #208).
* A typo caused problems loading fonts on some systems.
# rgl 0.108.3
## Major changes
* Added `getBoundary3d()` function to extract the boundary
edges of a mesh.
* Added material property `tag`, a string associated
with each object. The value is reported by `ids3d(tags = TRUE)` and
may be used to select objects in most functions that use ids,
but otherwise is
largely ignored by `rgl`. The `tagged3d()` function returns
information on tags.
* Primitive types (points, lines, segments, triangles, quads)
can now accept an `indices` parameter, similar to the
indices in `mesh3d` objects.
* Added `Buffer` object, based on glTF design, for holding binary
data for `rglwidget()`.
## Minor changes
* Allowed for a third coordinate in `text3d()`'s `adj`
parameter.
* Added support for `adj`, `pos` and `offset` to
`sprites3d()`.
* Added support for `pos` values of `0` (at specified
location), `5` (in front of it), and `6` (behind it) in
`text3d()`, `sprites3d()` and `plotmath3d()`.
* `crosstalk` is now a Suggested package, rather than
a required one.
* The `Makevars.ucrt` file has been modified with
contributions from Tomas Kalibera to work with his `winutf8`
build of R.
* `bgplot3d()` no longer pauses for each page when running
examples.
* `deldir` version 1.0-2 is incompatible with `rgl`. Added
the `checkDeldir()` function to avoid running it.
* `shade3d()` treated texture coordinates like colors, and
duplicated the first one for the whole face when `meshColor = "faces"` was chosen.
Instead, they are now treated like vertex coordinates.
(Reported by Michael Sumner in issue #145).
* Corrected the documentation and made the implementations
of `asHomogeneous()`, `asEuclidean()` etc. more consistent.
* An `as.rglscene()` generic has been added, though no methods
are defined in this package.
* `downlit` 0.4.0 has been released with support for `rgl`, so instructions
for installing the devel version have been removed.
## Bug fixes
* Fixed rendering of text as sprites3d() objects.
* Added `--static` flag to configure script for FreeType
installation. (Suggestion of Simon Urbanek and Prof. Brian Ripley.)
* `shade3d()`, `wire3d()` and `dots3d()` overrode
`"front"` and `"back"` material settings in mesh objects.
* `rglwidget()` handling of bounding box decorations had
several bugs.
* `rgl` could not find routines in the DLL on some Windows
installs (Issue 148.)
* Some cases where allocations were not protected have been fixed.
# rgl 0.107.10
## Major changes
* Added `expect_known_scene()` function to work with
`testthat`.
* Added some `testthat` tests.
* Prepend a 5th entry to `par3d("mouseMode")`, corresponding
to actions to take when no button is pressed.
* Allowed any of the mouse modes to be applied to
the mouse wheel.
* Added the `setUserCallbacks()` function to allow
user-specified mouse callbacks in WebGL code.
* Added Javascript code for support of movable
axis labels in `bboxdeco` objects.
* Most drawing functions can now draw in the margins
using new material properties `margin` and `floating`,
with objects that move as the bounding box changes.
See `?mtext3d` for details.
* The `mtext3d()` argument order has changed.
* Added the `setAxisCallbacks()` function to allow
user-specified axis drawing routines.
* Exposed (and generalized) the `as.tmesh3d()` function.
## Minor changes
* The `shiny` and `manipulateWidget` packages have been changed from imports
that are always loaded to suggested packages that
will only be loaded if needed. This will reduce the
"footprint" of `rgl` for users who don't use them.
* The NULL device can now specify `par3d("useFreeType")`
and the result is saved.
* Code to work with pre-1.33 versions of `knitr` has now
been removed.
* Added documentation of Javascript to web page.
* The handling of the `RGL_DEBUGGING` environment variable
has changed: now it must look like `TRUE` to trigger
Javascript debugging mode.
* Argument `webshot = TRUE` has been added to `movie3d` (issue #113).
* The assert() macro is now always defined.
* In Windows, the `WM_PAINT` handler should be more tolerant
of code called while painting.
* `as.mesh3d.default()` can create segments. (Contributed
by Michael Sumner.)
* `compare_proxy.mesh3d()` has been modified to be
compatible with both current and upcoming versions of
`waldo`.
## Bug fixes
* The bug workaround in 0.105.22 for issue #27 triggered a bug
in RStudio, resulting in two RStudio processes showing up
when `rgl` was loaded. The workaround is now skipped when
RStudio is detected. Use `options(startQuartz = TRUE)`
in RStudio before loading `rgl` to run it,
or `options(startQuartz = FALSE)` to suppress it.
* In some cases, snapshots in `rmarkdown` documents
were produced at the wrong size.
* Controls failed to modify sphere colors (e.g. as in `example(playwidget)`, issue #102)
# rgl 0.106.8
## Bug fixes
* Some of the changes related to avoiding `testthat` errors
in other files accidentally introduced a new error
in coloring meshes in `rgl`: now fixed.
* `readOBJ()` was broken by the 0.106.x changes.
* `merge.mesh3d()` failed for meshes containing points or
segments.
# rgl 0.106.6
## Major changes
* Changes for `pkgdown` compatibility have been added. See `vignette("pkgdown")`.
* Added `drape3d()`, to "drape" objects across a mesh.
(Contributed by George Helffrich.)
* Added `shadow3d()` to project one mesh onto another.
* Added `facing3d()` to subset a mesh to parts facing
in a particular direction.
* Meshes may now include points and line segments as well
as triangles and quads. The arguments to `as.mesh3d.default()`
have changed accordingly, and a new function `mesh3d()`
has been added.
* Reformatted the `inst/NEWS` file so it is visible here.
* Added `asHomogeneous2()` and `asEuclidean2()` to work directly
with `3 x n` and `4 x n` matrices.
* Added `rglExtrafonts()` to load additional fonts for
use with FreeType rendering. Requires the `extrafont` package.
## Minor changes
* The help pages have been edited to continue to
de-emphasize `rgl.*` functions.
* Changes have been made for compatibility with the
experimental Windows-UTF8 build of R.
* Allowed infinite values for strip limits in `filledContour3d()`.
* Setting material property `point_antialias = TRUE` now
gives round points in `rglwidget()` displays.
* The reuse argument in `rglwidget()` is no longer used.
* Sphere initialization in WebGL displays is now done
entirely in Javascript.
* Set "window_group" in X11 so `rgl` windows are grouped,
based on code by Ivan Krylov.
* `filledContour3d()` now accepts levels in decreasing order.
* `mergeVertices()` and `as.mesh3d.rglId()` have been improved.
* `r3dDefaults$useFreeType` is now set to `FALSE` on
Windows, so that system fonts will be used by default.
* Text `family = "symbol"` has never really worked,
and is no longer recommended.
* Added `compare_proxy` method in case a recent `testthat`
is being used.
## Bug fixes
* The width and height of an `rglwidget()` once again adapt
to the viewer window in RStudio (issue #74).
# rgl 0.105.22
## Minor changes
* Add `Biarch` to `DESCRIPTION` so both architectures are built on
Windows.
## Bug fixes
* Fixed error in new args to `snapshot3d()` (reported by Tony Hirst:
https://github.com/dmurdoch/rgl/issues/21 .)
* Improved test for presence of WebGL (suggested by Git Demont,
https://github.com/dmurdoch/rgl/issues/31 ).
* On macOS an interaction between `rgl` and the `quartz()` device
caused a segfault (see issue #27). Added workaround.
(reported by Rich Heiberger,
https://github.com/dmurdoch/rgl/issues/27).
* Fixed a bug affecting fat (`lwd > 1`) line segments in
`rglwidget()`.
* A bug in the `Makevars` files caused builds using a
parallel make to fail.
* A bug in conversion of displays to WebGL prevented planes
from displaying properly.
* In `rglwidget()`, background images could cause other parts of
the display to disappear.
# rgl 0.105.13
## Major changes
* Inclusion in `knitr` documents will now be simplified
in versions of `knitr` that incorporate its PR#1892.
* Added `webshot` argument to `snapshot3d()`, to use the
`webshot2` package (currently only available from
Github; see `?snapshot3d` for details) to produce snapshots
even on headless systems.
* Moved development home from R-forge to Github.
## Minor changes
* Windows builds now download Freetype from `rwinlib`
during the build. (Contributed by Jeroen Ooms.)
* `shinySetPar3d()` now accepts a list, as returned in
`input$par3d` by `shinyGetPar3d()`, as input. (Suggestion
of Yohann Demont.)
* The default color scheme for `filledContour3d()` changed in
R versions previous to 3.6.0, as `hcl.colors()` didn't
exist in those versions. (Reported by Daniel Baston.)
* Testing shows that with the above change, `rgl` will now
work in R versions from 3.3.0 up.
* `snapshot3d()` now defaults to writing to a temporary file
instead of failing if no filename is given.
* Both `snapshot3d()` and `rgl.snapshot()` now return the
output filename invisibly.
* `rglwidget()` no longer tries to include both a snapshot and
a WebGL scene: it can only do one or the other.
* Now builds the non-OpenGL DLL and puts it in `inst/useNULL`,
so `options(rgl.useNULL=TRUE)` before loading `rgl` will cause
it to not use X11 at all.
* Made the startup code more resilient in case X11 isn't
working.
* Set up a `drat` repository to hold the unreleased `webshot2`
package.
## Bug fixes
* Some bugs in `thigmophobe3d()`, `mergeVertices()` and
`as.mesh3d.default()` have been fixed.
# rgl 0.104.16
## Minor changes
* Added `--disable-opengl` configure option to run entirely without
OpenGL (to support Apple M1 machines without GLX,
and others which don't have X11 or OpenGL devel
files installed).
* Added explicit typecasts to suppress compile warnings.
* Restored some of the Windows configuration from pre-0.101.2
to allow use on older R versions.
* Dropped use of `mathjaxr`, which caused issues on Debian.
* Experimental support for handling mouse selection in Shiny
added, along with `"shinyMouse"` demo.
* The result of `open3d()` now has class `"rglOpen3d"`,
and `knitr` will use this during auto-plotting.
## Bug fixes
* Fixed bug in `rglwidget()` that caused it to fail to display
text if too many strings were in the same object.
(Reported by Yohann Demont.)
* Fixed some small bugs, found by `lintr`.
* Fixed bugs in Shiny support, and moved Shiny demo code into
single files in demo directory.
* Fixed bugs in `addNormals.mesh3d()` method, added `angleWeighted`
argument, defaulting to `TRUE`.
* Fixed bugs in `rglwidget()` displays of transparent spheres.
# rgl 0.103.5
## Major changes
* Added `clipObj3d()`, `contourLines3d()` and `filledContour3d()` functions.
* Modified `clipMesh3d()` function to make it more consistent
with the above three functions. The main incompatibility
with the version in 0.100.26 is that only vertex
coordinates are now passed to the clipping function.
## Minor changes
* Add `merge()` method for `"mesh3d"` objects, and use it in
`filledContour3d()`.
* More deprecation of older `writeWebGL()` style controls.
* Add extra `knitr` hooks, so support for `rgl` should be
very similar to support for standard graphics output.
* Major rewrite of the WebGL code so that transparency
is handled better in `rglwidget()`. It has also been
split into multiple files which are joined with
"minification" on installation.
* Added utility function `makeDependency()` to support
Javascript library in source.
* WebGL code now supports fog in scenes. The default
`r3dDefaults` now sets `material$fog` to `TRUE`, and `bg$fog` to
`"none"`. (In `rgl`, fog must be set *both* in the background
and in the object to display.)
The formula used in WebGL is slightly different than in the
internal R display.)
* `getr3dDefaults()` now has two optional arguments to specify
what to retrieve, e.g. `getr3dDefaults("material", "color")`
to retrieve `r3dDefaults$material$color`, with NULL
if either part is missing.
* Added `fogScale` parameter to `bg3d()` and `rgl.bg()` to
allow increased or decreased fog.
* Added `fastTransparency` parameter to `spheres3d()` and
`rgl.spheres()`, to allow them to be drawn more quickly
when transparency is used.
* `"mesh3d"` methods for `shade3d()`, `wire3d()`, and `dots3d()`
have been rewritten to share code, allowing meshes
to have different front and back material properties.
* New functions `cur3d()`, `set3d()`, `close3d()` and `ids3d()` have been
added. Generally, users should use these rather than
`rgl.cur()`, `rgl.set()`, `rgl.close()` and `rgl.ids()`.
* `snapshot3d()` now has optional width and height parameters for the saved snapshot.
* the cursor now reflects the mouse mode in `rglwidget()`
displays.
* Texture coordinates in mesh objects now act the same
as colors with respect to the `meshColor` variable.
* Touch events are now supported in WebGL.
* Added `"snapshot"` `knitr` option to use when autoprinting.
* Added defaults to `snapshot3d(width = NULL, height = NULL)`.
* Added `as.mesh3d.rglobject()` method.
* Added `clip_to_density` argument to `plot3d.lm()` method.
* The build files have been updated to work with Rtools40
on Windows.
* `rglwidget()` now saves a copy of the original scene,
so it can be reconstructed or modified later.
## Bug fixes
* Fixed some memory leaks found by `valgrind`, and problems seen
on systems with no functional Asymptote or Pandoc.
* A bug in the initial color of a mesh object has been fixed.
* A bug in translating mouse coordinates (reported on
StackOverflow by Richard Morey) when an `rgl` widget is
included in a `Gitbook` has been fixed.
* Modified `writeASY()` for compatibility with Asymptote
2.65. (Reported by Pavel StřÞ.)
* `pop3d()` has been modified slightly so that it no
longer opens a new window if none is already present
* added `setGraphicsDelay()` function to work around bug
in macOS Catalina XQuartz.
* Made various improvements to reduce notes and warnings
during install, including suppressing deprecated OpenGL
warnings on macOS.
* Some declarations in WebGL made assumptions that were
not valid on mobile devices.
* The `"depth_mask"` material property was being ignored
in `rglwidget()`.
* `rgl.snapshot()` and `rgl.postscript()` could crash if a zero
length filename was passed to them.
# rgl 0.100.54
## Minor changes
* Changed `rgl.attrib(id, "normals")` so the normals will be returned
whether or not the object is lit. (Suggestion of Tyler
Morgan-Wall)
* The labels used in `rglwidget()` are now independent of `set.seed()`,
using code borrowed from Shiny for our own private RNG.
* `getr3dDefaults()` now gets values from `rgl::r3dDefaults`
if they are not present in the user's `r3dDefaults` list.
* `bgplot3d()` now uses the background colour from argument
`bg.color` (defaulting to the background color from
`getr3dDefaults()`) rather than always choosing white.
* The maintainer email address has been changed to
murdoch.duncan@gmail.com.
## Bug fixes
* Fixed bug in `plot3d.rglscene()` that caused restored subscenes to
ignore the mouse.
* `next3d()` no longer messes up when a user changes active
subscenes.
* If a sufficient version of Pandoc is not found, the
vignettes will still run, but won't execute any `rgl`
code.
# rgl 0.100.50
## Minor changes
* Added `?rgl.init` help topic to describe initialization
issues.
* Added sanity check to setting of `par3d("windowRect")`.
## Bug fixes
* Rewrote the initialization code to deal with problems
related to indirect GLX and `Xvfb`.
# rgl 0.100.47
## Minor changes
* `demo(stereo)` now uses `plot.raster()` rather than `image()`.
* Added a section on textures to the main vignette.
* The configure script has been updated.
* The functions in the `tkrgl` package have been moved into `rgl`.
* Demo tests are suppressed when run with the `rgl` null device.
* The `anaglyph()` function in the `"stereo"` demo now prints
information about failed pixel reads.
* Included textures have been compressed (and in some cases
repaired).
* The tests of the demos have been moved to `inst/slowTests` so that
running them is optional (and the CRAN checks will go faster).
## Bug fixes
* Fixed a bug in `readOBJ()` that affected reading texture coordinates.
* `rgl.pixels()`, `rgl.snapshot()` and `snapshot3d()` now read from the
back buffer, which should increase reliability.
* Fixed bug when setting `windowRect`: `viewport` was not
always updated.
* Fixed bug in handling mouse wheel events: they were
not directed to the correct subscene.
* Fixed bug in configure script for systems with `pkg-config`
but no freetype2.
* Fixed bug that caused `bg3d()` and `bgplot3d()` to wipe out
fog setting.
* Fixed `writeASY()` to work with a more recent version of
Asymptote. Use `ver244 = TRUE` for the older version.
* `plot3d(..., type = "s", add = TRUE)` chose a bad default
radius for the spheres -- possibly even zero.
* `planes3d()` could fail to draw the plane if it intersected a
vertex of the bounding box of the scene.
* In Shiny, controllers like `rglMouse()` did not automatically
link to an `rglwidget()`.
# rgl 0.100.30
## Minor changes
* Added `meshColor` as an argument to `tmesh3d()`, `qmesh3d()`
and `dot3d()`; changed default to no longer give warning if
`meshColor` is not specified.
* Added `all.equal()` method for `"mesh3d"` objects, so that
changes caused by the above are ignored.
* Added `tri_to_keep` argument to `as.mesh3d.ashape3d()` for
compatibility with conflicting method from `nat` package
version 1.8.11.
* Removed deprecated C++ functions `std::bind2nd` and `std::ptr_fun`
as requested by CRAN. Other changes to remove compile
warnings also made.
# rgl 0.100.26
## Major changes
* added `clipMesh3d()` to allow smooth clipping of mesh objects
* Made `plot3d.lm()` method handle a larger variety of models, by
allowing for curved surfaces.
* Added `as.mesh3d.default()` method to convert triangles or quads
to a `"mesh3d"` object.
* Added `as.triangles3d()` generic with methods to convert `"mesh3d"`
objects into matrices representing triangles.
* Added `as.triangles3d.rglId()` and `as.mesh3d.rglId()` methods to
convert displayed objects to usable data.
## Minor changes
* `open3d()` now signals an error if unnamed parameters are used
* `toggleWidget()` now makes it easier to initialize the scene with
some objects hidden.
## Bug fixes
* Fixed the startup code so that systems that don't provide
`uname` still work. (Suggestion of Settra Khemri.)
# rgl 0.100.24
## Bug fixes
* Fix `thigmophobe3d()` to try to keep up with changes in
`plotrix::thigmophobe()`.
* Stop `rgl.postscript()` from writing files to current directory
# rgl 0.100.19
## Bug fixes
* Fix some bugs detected by `valgrind`
# rgl 0.100.18
## Major changes
* Added `shinyGetPar3d()` and `shinySetPar3d()` functions for Shiny
interaction.
* Added `thigmophobe3d()` function to place labels away from
other points using `plotrix::thigmophobe()`.
* Added `arc3d()` function to draw spherical arcs.
* Added `"polygon_offset"` material property, to allow lines to be drawn
on surfaces.
* Added `plot3d()`, `persp3d()` and `as.mesh3d()` methods for
`"triSht"` and `"tri"` classes (produced by `interp` and `tripack`
packages.)
* `plot3d()` methods for objects of class `"formula"` and `"lm"`
and a `persp3d()` method for objects of class `"formula"`
have been added. (A bug in the implementation of
`as.mesh3d.deldir()` was found and fixed during the
latter addition.)
* `as.mesh3d()`, `plot3d()` and `persp3d()` methods for `"ashape3d"`
objects from the `alphashape3d` package have been added.
* The mouse mode (trackball, zoom, etc.) can now be applied
separately to each individual subscene in a scene.
(By default the mode is inherited from the root subscene.)
* Added `par3d("userProjection")`, to allow the user to supply
a change to the projection after all other display calculations
have been done.
* Added `par3d("activeSubscene")`, to allow mouse callback
functions to determine which subscene was clicked.
## Minor changes
* Added check for `"highp"` support to fragment shader in `rglwidget()`.
* Updated `text3d()` and related functions: dropped deprecated
argument `justify`, added `pos` and `offset` like base graphics
`text()`.
* Improved support of `"mesh3d"` objects: added print methods,
added `meshColor` argument to `wire3d()` and `shade3d()` to control how
colors are interpreted, added `"rgl.meshColorWarning"`
option to control warnings about these changes.
* The `plot3d.mesh3d()` method now has the same default
for `aspect` as the default method.
* `pch3d()` now allows separate `color` and `bg` specifications
for each point. In addition, the default for the `"lit"`
material property is now `FALSE`, so by default filled
symbols will match the requested colour regardless of
lighting.
* Minor fix ups to the vignettes.
* Now uses the `manipulateWidget::combineWidgets` function
when putting multiple objects into a pipe.
* Now accepts fixed CSS units in width and height for `rglwidget()`.
* `playwidget()` is no longer an S3 generic function.
* The configure code to detect freetype has been updated
to use `pkg-config` (code contributed by Dirk Eddelbuettel.)
* If a `playwidget()` has been initialized but it can't find
the `rglwidget()` that it is controlling (likely due to a
typo somewhere), it now throws an alert message.
## Bug fixes
* Fixed texture bug introduced in fix in 0.99.16.
* The `persp3d.deldir()` method didn't display labels properly.
* When the X11 initialization failed, `rgl` messed up the S3
methods system. (Reported by Gregory Jefferis.)
* Probably due to a compiler change, `rgl.bbox()` was
returning 0/1 instead of the id of the axes.
* `pch3d()` was failing in `rglwidget()` for some shapes.
(Reported by Luca Scrucca.)
* `par3d(mouseMode = "none")` was not implemented properly,
so appeared to be a no-op.
* Selection functions did not work well with subscenes.
* Deleting an object that has been added as a 3D sprite
caused `rgl` to crash.
* A number of memory bugs found by `rchk` have been fixed.
* Textures specified in global material list (e.g. by being
used in `rgl.*` functions) were not handled properly.
(Reported by Ty Tuff.)
# rgl 0.99.9
## Major changes
* Added support for communication with other widgets
using the `crosstalk` package. See `?rglShared` and
`vignette("WebGL")` for details.
* Added the `rglMouse()` function to allow the mouse
mode to be changed in a WebGL display.
## Minor changes
* Christophe Geuzaine's GL2PS library (used by `rgl.postscript()`)
updated to version 1.4.0.
* The Pandoc system requirement has been updated to
1.14, as 1.13.1 is no longer sufficient.
## Bug fixes
* Fixed a bug causing the `rglwidget()` to fail to work
in a `flexdashboard()` display.
* Fixed a bug in Shiny interaction
* Changed WebGL text rendering to avoid overloading
browser.
* Sphere rendering within R sometimes showed strange
artifacts.
# rgl 0.98.22
## Minor changes
* Record context (`ioslides`, `shiny`, etc.) in scene
when `rglwidget()` is called.
* Allow more than 16 scenes in `html_document`, `ioslides_presentation` and
`slidy_presentation`.
* `useSubscene3d()` now returns the id of the previously active subscene,
to make temporary changes more convenient.
* `renderRglwidget()` and `renderPlaywidget()` now have an optional argument
`outputArgs` for use in dynamic R Markdown documents.
* `rglwidget()` now warns if an object has too many vertices.
* added an approximation to "polar" mouse controls to WebGL display.
* the `"centers"` attribute now refers to the individual facets
of spheres, rather than the whole sphere. Use `"vertices"` for
that.
* Tried to give a more helpful startup error message on macOS.
* Added documentation to `rglwidgetClass` in Javascript.
* `vertexSetter()` can now set plane parameters.
* Modified `platform.cpp` so it works with `__STRICT_ANSI__`
defined.
* As many browsers have dropped support for setting line width
in WebGL scenes, this has been redone in `rglwidget()`
code using a vertex shader.
Line endings and joins are rounded, not squared as in OpenGL.
* The 65535 vertex limit has been removed (at least in browsers
that support big indices).
* The requirement that colors being controlled by an `ageControl()` or `vertexControl()`
be duplicated in the original has been removed.
## Bug fixes
* The rendering order is changed: now all opaque objects are drawn first,
then all transparent objects. Previously this ordering was only done
within subscenes, leading to rendering errors when transparent objects
in one subscene were drawn before opaque objects in another.
* transparent spheres sometimes showed rendering
artifacts because they were not drawn from back to front. (Reported by Atte Tenkanen; original fix improved so nested
spheres should now work. WebGL display could still be
improved.)
* `par3dinterp()` did not always choose the best direction for interpolation
of the `userMatrix`.
* The `toggleWidget()` function didn't work properly in Shiny.
* Fixed addition of attribute to NULL.
* Fixed bug where textures or normals caused `readOBJ()` to fail;
added support for reading normals and texture coordinates.
* `axes3d("bbox")` didn't send parameters to `bbox3d()`.
* Fixed examples for `snapshot3d()` and `writeASY()` so that they don't
change the working directory.
# rgl 0.98.1
## Minor changes
* Cleaned up configure script.
* Cleaned up dynamic entry points.
* Added `add = FALSE` argument to `persp3d.deldir()`.
* `"shiny.tag"` objects are now supported as inputs to
`playwidget()`, so that `rglwidget()` values can be
wrapped in `htmltools::div()` to set their style.
* Added `figWidth()` and `figHeight()` functions for sizing
`rgl` plots in R Markdown documents.
## Bug fixes
* `layout3d()` handled multi-row cells incorrectly. (Reported
by Felix Carbonell.)
* Fixed a bug in `subsetControl()`, and added
`toggleWidget()`
* Renamed the `texture` argument to `persp3d.function()`
to `texcoords` for consistency with other functions, and
to avoid a collision with the `"texture"` material property.
* Fixed bug in scene initialization that sometimes caused it
to ignore initial control values.
# rgl 0.97.0
## Major changes
* Added `plotmath3d()` function, and set `text3d()` to
use it when necessary.
## Minor changes
* Added `fixedSize` argument to `rgl.sprites()` and related
functions.
* ` material3d()` now silently ignores attempts to set
read-only properties.
* Added `setUserShaders()` for user-specified shaders
(currently for WebGL only).
* Added support for two-sided surfaces in WebGL.
* Added `demo("rglExamples")` to display all the examples
in the `rgl` help in a collection of web pages.
This showed up a number of small bugs, which have been
fixed.
* `movie3d()` now optionally tries the R `magick` package first,
then the external ImageMagick v7 command `magick`
before trying `convert`. (The external change
suggested by Earl F. Glynn.)
* `par3d()` reports on the version of OpenGL that it sees
(as component `"glVersion"`).
## Bug fixes
* Fixed bug in conversion of bounding box decorations
used in `rglwidget()`.
* `addNormals()` gave an error if the mesh it was working
with had degenerate triangles or quads. (Reported
by Rolf Turner and Graham Griffiths.)
* Auto-clipping sometimes changed result vectors into
lists.
* The controllers did not recycle some values correctly.
* Fixed bug in initialization of `playwidget()`s.
* Fixed some bugs in `pch3d()` (reported by Gina Joue).
# rgl 0.96.0
## Major changes
* Added `as.mesh3d()` and `plot3d.deldir()` and `persp3d.deldir()` methods to
allow plotting of surfaces defined by irregular collections of points.
* Added `rglToLattice()` and `rglToBase()` functions to compute Euler angles
for the `lattice::wireframe()`, `lattice::cloud()`, and base graphics `persp()` functions.
* Added `arrow3d()` (based on the function of the same name in the
`heplots` package).
* Added `pch3d()` to give an approximation
to plotting symbols using `pch=<number>` in
base graphics.
* Added support for control of multiple subscenes
to `spin3d()`, `par3dinterp()`, `play3d()` and `movie3d()`.
* Added experimental function `writeASY()` for output in Asymptote format,
which will allow inclusion in PDF files.
* Added `rgl.attrib.info()` to display information about
object attributes.
* Merged `rglwidget` code back into `rgl`.
* Functions that modify the scene now return their
value with class `"rglLowlevel"` or `"rglHighlevel"` (using the new `lowlevel()`
or `highlevel()` functions) to indicate that a low- or high-level plotting function
has been called. If the new option
`"rgl.printRglwidget"` is `TRUE`, printing objects
of either class will trigger automatic
printing of the `rgl` scene using `rglwidget()`.
## Minor changes
* Gave better error when XQuartz is not found, tried for better test.
* Added more information on backgrounds to `scene3d()` to allow them to be used in `rglwidget()`.
* Now uses forward slashes in `rgl.postscript(fmt = "tex")` generated code.
(Thanks to Uwe Ligges for the problem report.)
* `cylinder3d()` now defaults to a rotation minimizing local frame.
* Added this NEWS file.
* Added better support for backgrounds.
* Added support for orthographic projections (`FOV = 0`).
* Added simple Shiny demo using tabs.
* Added version dependency for `jsonlite` so that the
new faster matrix code will be used.
* The worker functions used by `subdivision3d()` have
been exported for use on their own.
* The `rglwidget()` code now supports textures on spheres.
It now uses the same mesh as the one used inside R.
(The lack of support was pointed out by Justin McManus.)
## Bug fixes
* Background clearing was not handled properly. (Thanks to Paul Morse
for a bug report on this.)
* Fixed bug in rendering unlit 3D sprites.
* Web browsers only support a finite number of active
WebGL sessions; `rglwidget()` code now works to make more
careful use of this finite resource, so that large
numbers of `rgl` scenes can be present on a single
web page without exhausting it.
# rgl 0.95.1441
## Bug fixes
* Changed `rgl.pixels()` to attempt to avoid segfault on
OSX. (Thanks to Greg Jefferis for testing and workaround.)
# rgl 0.95.1435
## Major changes
* The Mac OS X native windowing system (`aglrgl.so`) has been
dropped; it appears not to work in Yosemite and El Capitan.
* WebGL code has been moved to the `rglwidget` package (though
the functions in `rgl` still work).
## Minor changes
* If `rgl.init()` fails, continue with the `NULL` device (with warnings).
* `scene3d()` now returns the normals and offsets of "planes"
objects, as with "clipplanes" objects. It still returns the triangles from embedding the
planes in the most recent subscene.
## Bug fixes
* A memory leak when drawing semi-transparent objects has been
fixed. (Reported by Felix Kuehnl.)
* Bounding box objects sometimes had miscalculated vertices
in `scene3d()`.
# rgl 0.95.1367
## Major changes
* Added `show2d()` to allow a 2d plot on a quadrilateral
in a scene.
* Added `matrixSetter()` function to allow multiple controls to
modify one matrix.
* Added `vertexSetter()` function to allow easier access to
vertex attributes.
## Minor changes
* Made error and warning text more consistent.
* Dropped chunk option `"rgl.keepopen"`; replaced it
with `"rgl.newwindow"`.
* Added `accumulate` argument to the subset WebGL controls.
* The `nticks` argument to `bbox3d()` was never used and has
been removed. Use `xlen`, `ylen` or `zlen`.
* Dependencies and imports have been updated.
* Used Jeroen Ooms' `js::jshints()` function to clean up the
WebGL Javascript code.
* Allowed `values = NULL` in `propertySetter()` and `vertexSetter()`
to allow code to directly set values.
* Shaders are now stored in Javascript strings, not separate
script sections.
* Shape centers are now stored by `scene3d()`.
* Font family and numeric font number (style) are now returned
by `rgl.attrib()` and are stored by `scene3d()`.
## Bug fixes
* Fixed bug that sometimes prevented textures from displaying.
* `rgl.bbox()` (and hence `bbox3d()`, `decorate3d()`, `plot3d()`, etc.)
did not return the correct id for the bounding box decoration.
* Modified configure script to work with OS X 10.11 (suggestion of
Brian Ripley).
* Setting `xlen` etc. to zero in `bbox3d()` or `rgl.bbox()` now
(correctly) suppresses tick marks. (Reported by
Philipp Angerer.)
* Specifying `normals` or `texcoords` in both a
`"mesh3d"` object and a call to `shade3d()` to display
it caused an error; now the `shade3d()` specified
value has priority if `override = TRUE` (the default).
* When used with clipping on the bounds, `persp3d()` and `plot3d()`
did not work properly with a shared mouse. (Reported by
Marian Talbert.)
* Fixed a bug (reported by Dominick Samperi) that caused
vignettes using WebGL code in `knitr` to fail to initialize
properly. This required adding the `setupKnitr()` function,
which should be called at the start of each vignette.
It is *not* called automatically.
* Fixed a bug (reported by Kurt Hornik) that caused `rgl` to
fail to compile when `libfreetype` 2.6 was linked.
* Fixed a bug in `writePLY()` (reported by Kurt Hornik).
# rgl 0.95.1247
## Major changes
* Added `subsetSlider()`, `subsetSetter()`, `clipplaneSlider()`,
`propertySlider()`, `ageSetter()`, `propertySetter()`, `par3dinterpSetter()` and
`toggleButton()` functions to output HTML/Javascript controls for WebGL.
* Added `hook_rgl()` and `hook_webgl()` functions, based on the `knitr`
functions.
* Added clipping regions to `plot3d()` and `persp3d()`.
* Export the `GramSchmidt()` function (request of Remko Duursma)
* Added `readOBJ()`, with a very limited ability to read OBJ
shapefiles.
## Minor changes
* If a template file is used in `writeWebGL()`, the string `%prefix%`
will be replaced in it by the prefix argument.
* `writeWebGL()` now outputs a Javascript global variable named
`"<prefix>rgl"` of class `"rglClass"` that allows access to many of the
scene internals. (Inspired by patch submitted by Jeff Allen.)
* User mouse callbacks can now be retrieved within R using
`rgl.getMouseCallbacks()` and `rgl.getWheelCallback()`, and
may be included in WebGL output.
* `writeWebGL()` now outputs information on object ids to allow
them to be re-used in multiple figures on the same page.
See the `reuse` parameter and attribute of the result.
* Started a vignette describing user interaction in WebGL.
* Set the class of the main `"canvas"` element in
`writeWebGL()` output to `"rglWebGL"`.
* `rgl.snapshot()` now evaluates the `top` argument after `filename`
and `fmt`, so windows created when those are evaluated don't
overlay the `rgl` window. (Suggestion of Keith Jewell.)
* `writeWebGL()` now includes an argument `commonParts`, to allow
omission of common code in multi-figure displays.
* If `template` is `NULL` in `writeWebGL()`, no template file is used.
* The `persp.function()` method is now smarter about setting default
axis labels.
* The package now contains a vignette giving an overview of
the functions.
* `triangulate()` now supports polygons expressed with 3
coordinates (though they are still assumed to be planar).
* `par3d()` now includes `"listeners"`, a list of subscenes that
respond to mouse actions in the current subscene.
* The Windows configuration file has been modified to work in
R-devel (to become R 3.2.0).
## Bug fixes
* Fixed bug in `abclines3d()` that caused it to skip lines that passed
through the corners of the bounding box. (Reported by Sven Laur.)
* The `NULL` device did not handle changes to `par3d("windowRect")`
properly.
* Subscenes with `ignoreExtent = TRUE` were not plotted.
* The bounding box calculations now take clipping planes into account.
* `writeWebGL()` did not display the `bboxdeco` properly when working
in a subscene.
# rgl 0.95.1158
## Minor changes
* `rgl.snapshot()` now works with the `NULL` device (but produces a
black snapshot). This allows testing with `RGL_USE_NULL`.
# rgl 0.95.1157
## Major changes
* Allowed background of window to show bitmap; added `bgplot3d()`
and `legend3d()` functions.
## Bug fixes
* Reverted misguided changes to `par3d("modelMatrix")` from 0.94.
This affects `rgl.projection()` as well.
* Fixed bug (introduced in 0.94) causing loss of rectangle showing
selection area. (Reported by John Fox and others.)
* The `NULL` device now does not make any spurious OpenGL calls.
# rgl 0.94.1143
## Major changes
* Added function methods for `persp3d()` and `plot3d()`, to allow
surfaces to be plotted just by specifying the function.
## Bug fixes
* Fixed a bug introduced in 0.94 that made user callbacks crash R.
(Reported by Dave Hadka.)
* Fixed a bug exposed in 0.94 (but really introduced in 0.93.952)
that caused `writeWebGL()` to fail when a `NULL` device was active.
* Fixed a bug introduced in 0.94 with writing 3D sprite objects.
* Fixed a bug computing the bounding box of an embedded subscene.
# rgl 0.94
## Major changes
* Added "subscenes", i.e. scenes of objects nested within the
main window. This affects a lot of other functions as well,
which now act either on a single subscene or on the
overall scene.
* Added configurable mouse wheel actions via `par3d()` or
`rgl.setWheelCallback()`.
## Minor changes
* Allowed the coordinates of the viewport to be set.
* Changed the behaviour of `pop3d()` and `rgl.pop()`: the type is
now ignored if `id` is non-zero.
* `par3d("modelMatrix")` no longer includes the observer translation
* The `par3d()`, `par3dinterp()`, and `spin3d()` functions now
have arguments dev and subscene to specify where they apply.
* Included a copy of the source to `CanvasMatrix.js` (used by
`writeWebGL()`) at the request of the Debian administrators.
* Some of the animations have been sped up at the request of CRAN.
## Bug fixes
* The `NULL` device was not removed from the device list when
it was closed. (Reported by Henrik Bengtsson.)
# rgl 0.93.1098
## Minor changes
* `rgl.material()` (for textures), `rgl.postscript()` and `rgl.snapshot()`
now call `normalizePath()` on filenames, so tilde expansion should
be supported.
* internals are updated to be consistent with macOS 10.9 requirements
* Improved the approximation to the surface normal for degenerate
grids in `surface3d()` and `persp3d()`. (Problem found by Graham Griffiths
using polar coordinates; all `r=0` points were at the same location.)
* The new surface normals are now saved in memory, so `rgl.attrib()`
will return them even if they were calculated by `rgl`. * `scene3d()` now records light settings.
## Bug fixes
* `par3d()` could generate an error if an unnamed list was passed in.
* ` material3d()` lost settings for textures
* fixed a bug in triangulation code: it failed on `locator()` input.
* The Aqua support now works again, XQuartz is only needed for command
line use in Mac OSX.
* Bounding box calculations for surfaces with user normals were
incorrect.
* An array-overrun bug in `rgl.attrib()` showed up in `writeWebGL()`.
(Reported by Brian Ripley.)
# rgl 0.93.991
## Major changes
* Added `clipplanes3d()` function to implement clip planes. (Still
only partially implemented.)
## Minor changes
* Some cleanup of the declarations (submitted by Karl Millar).
# rgl 0.93.986
## Bug fixes
* The FTGL functions were mistakenly added to the `rgl` namespace
on some OSX compiles.
* Changes have been made to satisfy the stringent requirements of
the Solaris compiler.
# rgl 0.93.984
## Minor changes
* most `rgl` C++ functions and classes are now in namespace "rgl".
Others have prefix rgl_, with the exception of gl2ps functions,
which all have that prefix, and FTGL functions, which generally
have an FT prefix.
* entry points to the `rgl` DLL are now registered within the DLL,
and on systems that support it, all entry points other than the
registration function are hidden.
## Bug fixes
* `writeWebGL()` and the other write methods did not handle material
information properly after 0.93.975.
# rgl 0.93.975
## Minor changes
* the `scene3d()` function now records complete information about the
bounding box and the background.
* `rgl` declares most of its C++ objects in the global namespace.
Recently this has caused clashes with the `igraph` package, which
does the same, and which also has a Shape class. As a temporary
workaround the `rgl` class has been renamed to `"rglShape"`. A full
`rgl` namespace will eventually be added, with only the API functions
left in the global namespace.
## Bug fixes
* `rgl.texts()` without a window failed because it queried the window
before opening it.
# rgl 0.93.963
## Minor changes
* font selection assumed `rgl` was on the search path; now it may be
imported but not attached. Similarly, `r3dDefaults` need not be on
the search path.
# rgl 0.93.960
## Minor changes
* `writeWebGL()` now forces the position attribute to location 0, a
recommended optimization strategy. The color attribute is
forced to location 1.
* gl2ps has been updated to version 1.3.8 and support for point and line
sizes has been added (bug 4792)
* internal functions `.check3d()` and `rgl.select()` have been exported,
as they were used by the car package.
* `rgl` now prints a warning when a requested font is unavailable and the
default font is substituted.
## Bug fixes
* we now check for invalid characters when drawing text using bitmapped
fonts (bug 4787)
* `writePLY()` had errors writing points and lines.
# rgl 0.93.952
## Major changes
* added `triangulate()`, `polygon3d()`, `extrude3d()` and `turn3d()`
for display of shapes based on two-dimensional polygons or curves.
* added support for "headless" operation: see help for new
function `rgl.useNULL()`.
## Minor changes
* added name of device to result returned from `rgl.cur()`; added function
`rgl.dev.list()` to list all open devices.
* examples and demos now check `rgl.useNULL()`, and don't run invisible
animations.
## Bug fixes
* fixed formatting of vertex reference numbers in `writeOBJ()` (issue
4732, reported by Alejandro Baranek).
# rgl 0.93.944
## Major changes
* added `identify3d()` function
## Minor changes
* write the `rgl` version into the WebGL file
* cleaned up use of `CHECKGLERROR`, so that setting `USE_GLGETERROR` to 1 in
`R.h` will enable detailed checking
## Bug fixes
* fixed bbox bug in `writeOBJ()` (reported by Matthias Zeeman), `writePLY()`
and `writeSTL()`.
* `aspect3d()` (called by `plot3d()`) caused the scene to be redrawn,
even if `par3d("skipRedraw")` was `TRUE`.
* `addNormals.mesh3d()` failed on objects when the matrices
of triangles or quadrilaterals had zero columns.
* `rotate3d.mesh3d()` did not transform normals properly
* the `writeWebGL()` function produced fragment shaders that would not
work in some browsers (e.g. Firefox and Chrome with the ANGLE
WebGL engine).
# rgl 0.93.935
## Bug fixes
* in certain circumstances since 0.93.930, text would fail to appear.
(Reported by Karline Soetaert.)
# rgl 0.93.932
## Bug fixes
* calling `rgl.material()` before any rendering caused a crash on OSX.
(Reported by Dan Tenenbaum.)
# rgl 0.93.930
## Minor changes
* Now handles local (not just directional) lighting. Based on
code contributed by Alexander Senger.)
* `writeWebGL()` handles lighting properly. Based on code contributed
by Alexander Senger.
## Bug fixes
* `writeWebGL()` did not handle `snapshot=FALSE` properly. (Reported
by Yihui Xie.)
# rgl 0.93.928
## Minor changes
* Updated the configure file using autoconf 2.69
* Forced OSX installs to put `/usr/X11/bin` at the head of the path
when looking for freetype-config
# rgl 0.92.879
## Major changes
* Added `writeWebGL()` function, to allow scenes to be viewed in a web
browser.
## Minor changes
* Removed `rgl.save.texture()`: textures are not saveable!
* Added "centers" to the attributes that can be queried, for depth sorted
transparent rendering.
# rgl 0.92.880
## Minor changes
* Rearranged declarations for compatibility with gcc 4.7.
# rgl 0.92.881
## Bug fixes
* Fixed degenerate (e.g. straight line) cases in `cylinder3d()`.
# rgl 0.92.883
## Major changes
* Added 3d "sprites" -- shapes that maintain their initial orientation.
# rgl 0.92.887
## Minor changes
* Added "caps" to the end of `cylinder3d()` objects.
# rgl 0.92.891
## Minor changes
* Added support for 3d sprites to `writeWebGL()`.
# rgl 0.92.892
## Minor changes
* Added declaration needed by Solaris.
# rgl 0.92.893
## Bug fixes
* `rgl.light()` and `light3d()` did not return the light ID value.
# rgl 0.92.894
## Bug fixes
* remove debugging code from `configure.win` that was causing problems
on the CRAN WinBuilder system
# rgl 0.93
## Major changes
* Added `readSTL()` and `writeSTL()` functions
* Added `writePLY()` and `writeOBJ()` functions
* Added `scene3d()` function
* Added `selectpoints3d()` function to select points from the scene.
## Minor changes
* Added `expand` argument to `decorate3d()` and `axes3d()`
* Added `base` argument to `spin3d()` result
* Added section argument to `cylinder3d()`
* Added `res_name="rgl"` and `res_class="R_x11"` to the `WM_CLASS` property of X11
windows. (Contributed by Philip Johnson.)
* Added code to work with R 3.0.0 `setHook()` changes
* The `rgl` window now handles `ESC` key presses. During selection
and `play3d()` they abort the process; otherwise they are ignored.
* Copied the `R_pretty0()` function from R sources to avoid warning.
## Bug fixes
* `writeWebGL()` did not render semi-transparent surfaces properly.
(Reported by Robert Esswein.)
# rgl 0.92.861
## Minor changes
* Added `rgl.save.texture()` to get texture from an object.
## Bug fixes
* Fixed segfault on startup on Windows in MDI mode.
# rgl 0.92.858
## Major changes
* Added `Sweave()` support through the `rgl.Sweave()` driver and the `Sweave.snapshot()`
function.
* Added `rgl.abclines()`, `rgl.planes()`, `abclines3d()` and `planes3d()` to draw
lines and planes intersecting with the bounding box.
* Functions `rgl.attrib.count()` and `rgl.attrib()` (and internal function
`rgl.getmaterial()`) added to allow objects in the scene to be examined.
## Minor changes
* Added declarations for Solaris compatibility (from Brian Ripley)
* Fixed `configure.win` for bi-arch compatibility. Windows installers can
set `HAVE_PNG` to a non-empty value, and `rgl` will look for
the libpng files in the default `LOCAL_SOFT` location when installing.
* Added `"depth_mask"` and `"depth_test"` material properties, to allow control
over how objects are obscured by each other.
* Added iterative computation of the bounding box to handle objects like
spheres, which need to maintain their apparent shape as the scaling
changes.
* Improved the bounding box decoration in two ways: it can now draw the
front faces (to surround the whole graph), and can label edges with pretty
labels. `plot3d()` was modified to use this instead of manually setting axis
locations and using `box3d()` to draw a box, allowing resizable labelled
axes.
* Removed some unnecessary declarations from `rglmath.h` that were causing
problems in an old version of gcc on Solaris.
* `rgl.postscript()` now adjusts the size of text following the `cex` setting.
The `font` and `family` settings are still ignored.
* Transparency in material textures was not always rendered properly.
* In OSX, the Carbon system has been replaced by a Cocoa system.
(Code contributed by Adam Strzelecki). For compatibility with the
Windows build system, the new files have been put into `src/osx`.
* Hardware antialiasing is now used if the OpenGL driver supports
it. Set `options(rgl.antialias=0)` to disable it.
* Updated gl2ps to version 1.3.6
## Bug fixes
* Bug fix for `divide.mesh3d()` in handling normals.
* `rgl.ids()` did not return all object ids as documented.
# rgl 0.92
## Minor changes
* Added detection of 64 bit MacPorts compiler to configure script.
(Bug #861)
* Allowed texture coordinates to be specified in mesh objects.
* Updated gl2ps to version 1.3.5
* Should now install using `--merge-multiarch` on Windows
# rgl 0.91
## Minor changes
* Added `R_ARCH*` macros to `configure.win` for Win64 compatibility
## Bug fixes
* Fixed bug in `rgl.texts()`: zero-length texts argument caused crash.
(Reported by Michael Friendly.)
* Fixed bad declaration in `rglmath.h`
# rgl 0.90
## Minor changes
* Added `startTime` argument to `play3d()` and `movie3d()`.
* Fixed `configure.ac` as suggested by Jens Elkner.
* Updated declarations for libpng 1.4.0 compatibility.
## Bug fixes
* An off-by-one error caused the `"alpha"` component of the material
properties to be messed up. (Bug #809)
# rgl 0.89
## Bug fixes
* Fixed rounding errors and `Xvfb` errors in `rgl.pixels()` examples
and demo.
# rgl 0.88
## Minor changes
* Add `keepVars` argument to `cylinder3d()`, for debugging or special
effects.
* Add `BugReports` field to `DESCRIPTION`.
# rgl 0.87
## Minor changes
* Allowed `FOV` to be set to 0, for an orthogonal projection.
* Changed `seq(along=...)` to `seq_along(...)`.
## Bug fixes
* Fixed crash when zero-length color vector was used.
* Fixed crash in X11 after closing a window
* Fixed typo in `cylinder3d()`.
* Cleaned up bad links in Rd files.
# rgl 0.85
## Major changes
* Added `addNormals()` generic, to add normals for smooth surface rendering.
* Added `cylinder3d()` function, to make cylindrical or "tube" plots.
## Minor changes
* Added some namespace declarations to the C++, and renamed `math.h`, for
compatibility with Sun compilers (contributed by Brian Ripley).
* Fixed visibility of some `shade3d()`, `wire3d()` and `points3d()` methods.
## Bug fixes
* Fixed `material3d("color")` bug introduced in 0.82.
# rgl 0.84
## Major changes
* Added triangle meshes, shape lists, the Platonic solids and a cuboctahedron.
* Added classes `"mesh3d"` and `"shapelist3d"`; `"qmesh3d"` is only kept for
back compatibility.
## Bug fixes
* Bug fix to stop crashes when material is set before the first window is
opened.
# rgl 0.83-3
## Bug fixes
* Quick fix for R 2.9.x compatibility, and to remove accidental change
introduced in v0.83 which caused errors on plotting without `open3d()`.
# rgl 0.83-1
## Minor changes
* Don't try to build Carbon driver in 64 bit Mac OS (contributed by
Brian Ripley).
* Did not assume OpenGL 1.2 was available in material properties.
* Added numerous error checks.
## Bug fixes
* Fixed `rgl.pixels()` example for weird displays.
* Fixed `demo(stereo)` to add sync in X11: X windows seemed to grab
images before they were redrawn.
* Rearranged headers for Win64 compatibility (contributed by Alex
Chen).
# rgl 0.82
## Major changes
* added `rgl.pixels()` to read the generated image, and `demo("stereo")`
to illustrate its use.
## Minor changes
* rewrote internal rendering of transparent and anti-aliased shapes,
so they will be rendered better when there are several in the same
scene
* added material properties `"point_antialias"`, which causes points to be
drawn as smooth circles, and `"line_antialias"`, which causes
lines to be antialiased.
* added material parameter `"lwd"` for line width; `"size"` now applies only
to points.
* increased default point size to 3 pixels across.
* `movie3d()` gains a "type" argument to set the output type, and the
`convert` argument is more flexible.
* `rgl.snapshot()` gives more informative error messages when libpng is
not available.
* `axis3d()` now uses `format()` rather than `as.character()` to give
nicer looking labels.
* use R `warning()` to report messages, rather than popups or `REprintf`.
## Bug fixes
* fixed a bug in the bounding box decoration which caused axis labels
to be plotted in the wrong place.
* fixed a bug in the Windows driver which caused the standard system
font to disappear when justified.
* fixed bug in `open3d()`: "..." was being ignored.
* fixed bug in `qmesh3d()`: `homogeneous=FALSE` coordinates were not
handled properly.
* the clipping volume calculation was incorrect when scaling was used.
* corrected the `?rgl` example to display this file.
# rgl 0.81
## Minor changes
* converted Freetype font error into warning
## Bug fixes
* `rglFonts()` was being set at install time, but it should be set at load
time.
* fixed configuration problems in OS X
* fixed executable marker on a number of files
# rgl 0.80
## Minor changes
* worked around bug(?) in Mac OSX FTGL rendering
* updated FTGL to 2.1.3rc5
# rgl 0.79
## Minor changes
* added `mouseCallbacks()` demo, to show R implementations of standard
mouse handlers, multiple connected windows, stereo view, etc.
* added "silent" argument to `rgl.set()`, to allow temporary changes
to focus without changing window labels.
* added natural spline extrapolation to `par3dinterp()`.
## Bug fixes
* `rgl.pop()` could cause corruption when multiple windows were open.
# rgl 0.76
## Minor changes
* rename ChangeLog file to NEWS, as per discussion on R-devel
* add `"windowRect"` to `par3d()` parameters to allow window size to be
controlled from R.
## Bug fixes
* put our own `assert()` macro in place to avoid crashing R.
# rgl 0.77
## Bug fixes
* `par3d("windowRect")` returned garbage if there was no window open.
* `persp3d()` and `plot3d()` sometimes miscalculated ranges involving NAs.
* `select3d()` and `rgl.select()` produced a very inefficient test function.
# rgl 0.78
## Minor changes
* `rgl.texts()` and `text3d()` can now handle font and size specifications
using the FreeType library on any platform, or GDI on Windows.
* `adj` is supported both horizontally and vertically in drawing text.
## Bug fixes
* fix miscalculation of `mouseMatrix` that caused disappearing views.
* `rgl.pop()` was very slow when given a long list of ids.
* a workaround for OSX 10.5 OpenGL problems has been incorporated
(thanks to mkv22@cam.ac.uk).
# rgl 0.75
## Major changes
* add `play3d()`, `movie3d()`, `par3dinterp()`, and `spin3d()` functions, with flag demo
## Bug fixes
* rounding error could cause `par3d("userMatrix")` to generate NaNs and fail
* workaround for `Xvfb` on macOS problems
# rgl 0.74
## Major changes
* add `rgl.setMouseCallbacks()` to allow user actions
## Minor changes
* clean up `#include`s
* clean up some calls for SunStudio 12 compiler
# rgl 0.73
## Minor changes
* partial changes to avoid crash on macOS with `Xvfb`
* change to `rgl_init()` for R 2.6.0 compatibility
# rgl 0.72
## Minor changes
* declaration changes for compatibility with R 2.6.0 (from Brian Ripley)
# rgl 0.71
## Major changes
* allowed normals and texture coordinates to be specified in triangles, quads and surfaces
## Minor changes
* changes to configure script from Laszlo Kajan and Brian Ripley: should
now be much more portable
* removed deprecated OSX font setting calls
* texture properties are now returned by `material3d()`
* normals may be specified in `qmesh` objects, but (at present) `subdivision3d()` removes them
* ` material3d()` now preserves the values of unspecified parameters (as documented,
but not previously functioning)
* `clear3d()` can now reset material properties to the defaults, and
`open3d()` does this.
* minor fix for gcc 4.3 compatibility
* minor fix for R 2.5+ compatibility
* allowed more general surfaces to be plotted by `rgl.surface()`, `surface3d()` and
`persp3d()`, by specifying matrices for x and y coordinates
* added world map texture, used in `example(persp3d)`.
# rgl 0.70
## Minor changes
* OSX now builds two libraries, one for AGL, one for X11
* resolve entry points at load time, not call time
* updated gl2ps to version 1.3.2
* tweaked positioning of labels in bounding box decoration
* moved this file (ChangeLog) to inst directory, so it will be installed,
and added code to display it to the `rgl` help topic.
## Bug fixes
* fixed bug in `rgl.postscript()` in Linux, added text support to it
* `snapshot3d()` wasn't being exported, and snapshots were from the back buffer
* fixed bug that could cause crash on shutdown
# rgl 0.69
## Minor changes
* allow selection to use any button
* allow NA in primitives, surfaces, texts, and sprites
* report error in OSX if the wrong configure options were used.
## Bug fixes
* `persp3d()` partially ignored `add=TRUE`
* `plot3d.qmesh3d()` did not return result
* display was not being updated properly in OSX
# rgl 0.68
## Major changes
* added `grid3d()`, added `nticks` argument to `bbox3d()`, `axis3d()` and `axes3d()`.
## Minor changes
* fixed sphere drawing so spheres are spheres regardless of `par3d("scale")`
* added `type="s"` to `plot3d()` to draw spheres
* fixed handling of "..." in axis related functions
* added full MDI support
* removed use of `List` and `ListIterator` internally
* fixed handling of axes and boxes when a coordinate had zero extent
* changed `rgl.viewpoint()` default to be compatible with `r3dDefaults`
* added id return values to primitives and higher level functions,
and to `rgl.pop()`; added `rgl.ids()` to report on them.
* updated gl2ps to version 1.3.1, adding support for svg and pgf output formats.
# rgl 0.67-2
* minor correction
# rgl 0.67
* added support for png files with palettes, and grayscale pngs with 1, 2 or 4 bits
per pixel
* added `"ignoreExtent"` option to `par3d()`: objects plotted when this is true
are ignored when calculating the bounding box
* added `axis3d()`, `axes3d()`, `box3d()`, `mtext3d()`, `title3d()` functions from `djmrgl` for
annotating plots.
* added `plot3d()` high level plot function
* added ` material3d()`, which can both set and query material properties; changed
most `*3d` functions so they leave material invariant across calls.
* changed `open3d()` to set background and material defaults
* added `aspect3d()` to control the aspect ratio of the bounding box.
* added `xAxis`, `yAxis` and `zAxis` mouse modes, set `zAxis` as `r3d` default.
* added `persp3d()` function
* changed error messages to go through `REprintf` in X11 and OSX
* fixed segfault if `rgl_init()` failed
* converted type of `viewport` argument in `user2window()` and `window2user()` calls
* if the `rgl_init()` call fails, the package will still load with a warning (but
most function calls will result in errors).
* added `par3d("scale")` to handle `aspect3d()` operations internally.
* added `ellipse3d()` generic and methods for drawing confidence ellipsoids
* added `decorate3d()` to draw all the decorations, `plot3d.qmesh3d()` method.
* changed zoom to use ratio scale over larger range
* fixed bug causing jump after resize in Mac OSX (and maybe other platforms)
* `rgl.primitive()` now does sanity checks on inputs
# rgl 0.66
* added `"all"` and `"viewpoint"` to `rgl.clear()` and `clear3d()`
* added static libpng build support and user customizable prefix (unix)
* used `xyz.coords()` in all functions taking x, y, z coordinates, allowing
matrix or dataframe arguments (among others)
* added `par3d(skipRedraw=TRUE)` to allow drawing to be done without
being rendered
* fixed display list memory leak when drawing shapes (e.g. spheres)
* Changes for compatibility with strict enforcement of file naming rules in R 2.3.0.
# rgl 0.65
* simplified build system: uses 'R' build system
* added generic visualization/rendering interface (R3D)
* text justification from 0 to 1
* added primitive type: `linestrip`
* fixed `rgl.bringtotop()`, added stay option (win32)
* added 4x4 matrix functions from `djmrgl`
* added `rgl.user2window()` and `rgl.window2user()` functions
* added user-selectable mouse handlers
* added selection mouse handler
* added trackball mouse handler
* added z-distance sorted rendering of alpha-blended faces
* added gl2ps patch ( contributed by Albrecht Gebhard )
* added port: native Mac OS X Carbon
* bugfix: `rgl.close()`, `rgl.quit()` crashed on X11 occasionally.
* generalized `rgl.surface()` to allow surface over any coordinate plane.
* added `r3dDefaults` variable to allow user to set defaults
* added environment texture-mapping
# rgl 0.64-13
* DESCRIPTION fix: moved R 1.41 -> R 1.4.1 dependency
# rgl 0.64-12
* CRAN bugfix: permissions of cleanup fixed.
# rgl 0.64-11
* removed several redundant semicolons, required by gcc 3.4 ansi-pedantic mode.
* win32: uses R's `zlib` and `libpng` sources
* win32: added virtual destructor in `Win32GUIFactory` (removes warning)
# rgl 0.64-10
* updated `.C()` calls using `PACKAGE="rgl"`
* updated `Maintainer.mk` using correct `zlib` version
* improved dynamic unload using `library.dynam.unload()`
* conditional macOS x Darwin code in `.First.lib()`
# rgl 0.64-9
* macOS X 'Panther' G5 fix for OpenGL library loading in .first.lib
* removed `lpng` and `zlib` from source tree
* support for automatic downloading of `zlib` and `lpng` on win32
* added demo directory with several examples using `demo(rgl)`
# rgl 0.64-8
* build bugfix : removed `rgl/src/Makefile`
* updated configure to check and setup `LDFLAGS` for `OpenGLU` library
# rgl 0.64-7
* added mouse capturing
* `rgl.sprites()` 'radius' bug fixed
* memory leak bugfix: texture objects are now `AutoDestroy` and used through `Ref`'s
* resource management improvement: pixmaps get `free`'d when they become unused
e.g. texture objects are created.
* no limitations on pixmap sizes
* mipmap support
* support for different texture minification and magnification filters
# rgl 0.64-6
* updated build system: added `setversion.sh`
* with MinGW version 3.0.1 pixmap loading does work
* `project.mk`, `win32.mk` and `x11.mk` in `src/build` changed
now a single variable MODS will extend.
* MinGW build system changed.
`rgl.dll` now contains an R compliant Resource information
generated by R `perl` script
* bug fix: R 1.8.0/win32 does not detach packages when quit
it is safe now to call `rgl_quit()` and `lib_quit()` multiple times
`win32lib.cpp`: added `dllmain` that calls `rgl_quit()` on process exit
* added core support for `devcpp` IDE
# rgl 0.64-5
* macOS X/X11 port
# rgl 0.64-4
* manual update
* acquired valid CRAN package status,
`R CMD check` runs through with 2 WARNINGS
(according to `latex`, and `codoc`)
* uploaded to cvs
# rgl 0.64-3
* configure.ac: X11 library path broken, fixed
* `x11gui`: `glXChooseVisual()` part fixed
* code cleanup: `rglview.h`
* added: `man/maintainer.Rd` maintainer information
# rgl 0.64-2
* `rgl.quads()`: `enum` id was broken, fixed ("quads" -> "quadrangles")
# rgl 0.64
* autoconf build system
* moved textures to `inst/` directory
* x11 port
* `win32/vc`: fixed fpu control word precision to remain on 64 bit
links with `fp10.obj`
* changed texture mapping t coordinate for Surface node
# rgl 0.63
* API: added `rgl_init()`, `rgl_quit()`: explicit client initialization
* added `setup.bat`: build setup for windows
* win32 setup: MinGW compiler
* win32 setup: visual c++ compiler through `gui` environment
# rgl 0.62
* modified sphere set
* support R color strings
* use `system.file( <subpath>, package="rgl" )` in examples to retrieve texture files
* rewrote R code :
* clear `enum` types
* vertex vector datatype (internal representation matrix)
# rgl 0.61
* added: `rgl.sprites()`
* added: fps counter
* added: `autoUpdate`, modified win32 main loop, on hide, `autoUpdate` disabled, on show enabled
* modified material: added alpha vector
# rgl 0.60
* (mini-thesis release)
|