https://wiki.haskell.org/api.php?action=feedcontributions&user=Subw&feedformat=atomHaskellWiki - User contributions [en]2024-03-29T09:28:00ZUser contributionsMediaWiki 1.35.5https://wiki.haskell.org/index.php?title=Talk:IPhone&diff=34497Talk:IPhone2010-04-09T08:22:26Z<p>Subw: </p>
<hr />
<div>I removed a remark in reference to ''compiling'' embedded languages "A possible problem with the latter approach is that Apple does not allow Apps in the App store that run interpreted code". If the removed remark makes sense to anyone, please let me know. [[User:Conal|Conal]] 20:59, 5 February 2010 (UTC)<br />
<br />
<br />
<br />
Using Haskell for App Store apps may not be allowed anymore by the developer agreement? See http://lambda-the-ultimate.org/node/3905</div>Subwhttps://wiki.haskell.org/index.php?title=IPhone&diff=31474IPhone2009-11-08T12:34:52Z<p>Subw: </p>
<hr />
<div>= Collaborators =<br />
If you are working with Haskell and making iPhone apps, or if you intend to soon, please fill in your info below.<br />
By helping each other out, we can work more productively and have more fun.<br />
<br />
{|width="80%" border="1" cellpadding="2" cellspacing="0"<br />
|-<br />
!Name<br />
!Contact info<br />
!Haskell-fu (0-5)<br />
!iPhone-fu (0-5)<br />
!Have (to share)<br />
!Need<br />
!Intended iPhone apps<br />
|-<br />
| Conal Elliott<br />
| [http://conal.net Home], [http://conal.net/blog blog], [http://haskell.org/haskellwiki/User:Conal wiki user], [http://twitter.com/conal Twitter], [http://www.facebook.com/profile.php?id=685783314&ref=name Facebook], [http://www.linkedin.com/profile?&key=4476842 Linkedin], IRC: conal<br />
| 5<br />
| 0<br />
| Functional graphics & GUI, misc Haskell libs, design skills<br />
| iPhone basics, Haskell-to-iPhone compiler<br />
| Interactive graphics toys<br />
|-<br />
| Chris Eidhof<br />
| [http://eidhof.nl Home], [http://tupil.com Tupil], [http://haskell.org/haskellwiki/User:ChrisEidhof wiki user], [http://twitter.com/chriseidhof Twitter], [http://www.linkedin.com/pub/chris-eidhof/3/b6/2b6 Linkedin], IRC: chr1s<br />
| 4<br />
| 3<br />
| iPhone experience, web programming experience, dependent types experience<br />
| Haskell-to-iPhone compiler (either as DSL or GHC Core -> iPhone)<br />
| Navigation-based apps (think of things like iTunes, Facebook, etc.), Games (maybe using a combination of FRP and something like arrowlets)<br />
|-<br />
| Daniel Peebles<br />
| [http://pumpkinpat.ch Home], [http://twitter.com/copumpkin Twitter]<br />
| 3<br />
| 4<br />
| Extensive iPhone platform knowledge<br />
| GHC cross-compiling to ARM Mach-O<br />
| Nothing in particular yet<br />
|-<br />
| John Meacham<br />
| [http://repetae.net Home], [http://notanumber.net/ blog]<br />
| -<br />
| -<br />
| Working Haskell to iPhone compiler (jhc)<br />
| Testers and Feedback to make cross compilation smoother. HOC integration with jhc.<br />
| Symbolic Algebra Application, Equation Editor<br />
|-<br />
| Eelco Lempsink<br />
| [http://eelco.lempsink.nl Home], [http://tupil.com Tupil], [http://haskell.org/haskellwiki/User:eelco wiki user], [http://twitter.com/eelco Twitter], [http://www.linkedin.com/in/lempsink Linkedin], IRC: eelco<br />
| 4<br />
| 3<br />
| iPhone and web experience<br />
| Haskell-to-iPhone with (Cocoa Touch) API intergration<br />
| Nothing in particular, looking for a good Haskell use-case :)<br />
|-<br />
| Bernd Brassel<br />
| [http://www-ps.informatik.uni-kiel.de/~bbr Home],[http://www.art2guide.com/index_en.html art2guide]<br />
| 5<br />
| 4<br />
| Haskell experience, iPhone developer<br />
| iPhone embedding into Haskell, good programmers<br />
| audio-visual guiding systems<br />
|-<br />
| Martin Kudlvasr<br />
| [http://trinpad.eu not exactly home],[http://www.linkedin.com/in/martinkudlvasr LinkedIn], irc: trin_cz, xmpp: trin@jabbim.cz<br />
| 3<br />
| 0<br />
| year of haskell experience in OpenGL and project euler<br />
| iPhone basics, Haskell-to-iPhone compiler<br />
| fascinated by reactive, game development<br />
|-<br />
| Sebastiaan Visser<br />
| [http://github.com/sebastiaanvisser Projects], [http://haskell.org/haskellwiki/User:Sebastiaan wiki user], [http://twitter.com/sfvisser Twitter]<br />
| 4<br />
| 0<br />
| Some experience/ideas about building EDSLs.<br />
| Deep EDSL Haskell-to-ObjectiveC, high-level to target GUI/animation. <br />
| Nothing in particular yet. Want to have objective C backend for [http://github.com/sebastiaanvisser/frp-js/tree/master this] EDSL.<br />
|-<br />
| Manuel Chakravarty<br />
| [http://www.cse.unsw.edu.au/~chak/ Home], [http://justtesting.org blog], [http://haskell.org/haskellwiki/User:chak wiki user], [http://twitter.com/TacticalGrace Twitter], [http://www.linkedin.com/in/manuelchakravarty LinkedIn], IRC: Chilli<br />
| 5<br />
| 2<br />
| Haskell EDSL & compiler know how; Objective-C and Cocoa Touch basics<br />
| Haskell tools for iphone dev<br />
| games & productivity apps<br />
|-<br />
| Ryan Trinkle<br />
| [http://haskell.org/haskellwiki/User:RyanT5000 wiki user], [http://twitter.com/ryant5000 Twitter], [http://facebook.com/ryant5000 Facebook], [http://www.linkedin.com/pub/ryan-trinkle/2/a74/9b3 LinkedIn], IRC/AIM: RyanT5000<br />
| 4<br />
| 3<br />
| GHC iPhone compilation (working, to be contributed to GHC soon)<br />
| Smart people<br />
| Games<br />
|-<br />
| Stephen Blackheath<br />
| [http://haskell.org/haskellwiki/User:Blackh wiki user], IRC: blackh, [http://blacksapphire.com/antispam/ email]<br />
| 4<br />
| 2<br />
| Working with Ryan Trinkle to release GHC iPhone compilation<br />
|<br />
| Games<br />
|-<br />
| Simon Marlow<br />
| [http://haskell.org/haskellwiki/User:Simonmar wiki user], [http://twitter.com/simonmar Twitter], IRC: JaffaCake<br />
| 5<br />
| 0<br />
| Happy to help with GHC porting issues: ask on #ghc<br />
| <br />
| <br />
|-<br />
| Simon Michael<br />
| [http://joyful.com home], [mailto:simon@joyful.com email], IRC: sm<br />
| 3<br />
| 1<br />
| hledger project, darcs/happstack/web dev/sysadmin experience<br />
|<br />
|<br />
|-<br />
| Max Weisel<br />
| [http://maxweisel.com Home], [http://twitter.com/mxweas Twitter], IRC:mxweas<br />
| 3<br />
| 5<br />
| Ample Toolchain/SDK development knowledge & experience.<br />
|<br />
|<br />
|-<br />
| Sung Yoon<br />
| [http://www.bamsom.com Home]<br />
| 1<br />
| 4 <br />
| iPhone App development<br />
|<br />
| Games, interactive graphics/sound apps<br />
|-}<br />
<br />
There are at least two ways to use Haskell to make iPhone apps.<br />
One is having a Haskell-to-iPhone compiler, which would probably cross-compile from another host environment (probably Mac OS X).<br />
Another way is to write Haskell programs that ''generate'' iPhone-compatible code when run (rather than when compiled), based on an embedded DSL, similarly to [http://conal.net/papers/jfp-saig/ ''Compiling Embedded Languages'']. A possible problem with the latter approach is that Apple does not allow Apps in the App store that run interpreted code.<br />
<br />
= Resources =<br />
<br />
* [http://iphoneideas.tumblr.com/ Free iPhone ideas] (blog by Chris Eidhof)<br />
* [http://hoc.sourceforge.net/ HOC Haskell to Objective-C binding]<br />
* [http://github.com/sebastiaanvisser/frp-js/tree/master Reactive DSL currently with JS backend]. We might be working on Objective-C backend during Hack-ΙΈ.<br />
* Stanford course: [http://www.stanford.edu/class/cs193p/ iPhone Application Programming], with online notes, code, and lecture video.<br />
* [http://hackage.haskell.org/trac/ghc/wiki/ObjectiveC Haskell Objective-C FFI proposal] (work-in-progress)<br />
<br />
= GHC as a cross compiler =<br />
Now that GHC can be used as a cross compiler again we should document what is left in getting GHC to compile apps for the iPhone.<br />
<br />
# Can the RTS be ported to the iPhone?<br />
## How much work is this?<br />
### iPhone OS is mostly a vanilla OS X, running on ARM. Syscall numbers, the object format, and the kinds of things that are available on it are all pretty much the same as OS X. The main difference is the architecture. Word size etc. are mostly the same as other platforms that are already supported, so I don't think much more is needed for an unregistered built, at least.<br />
<br />
# Do apps have to be signed in some way?<br />
## Yes, unless you're on a jailbroken platform. On Mac OS 10.5 and up, there is a program called codesign that takes an identity (with an associated private key) and signs the provided binary. Although I don't think the source for this program is publicly available, what it actually does is reasonably simple and could be ported to multiple platforms quite easily (especially given the macho library on hackage).<br />
<br />
= Jhc as a cross compiler =<br />
<br />
Jhc has full support for cross compiling to the iPhone. Information on how to do so is in the jhc manual under [http://repetae.net/computer/jhc/manual.html#crosscompilation Cross Compilation]. Basically, you just add the following to your ~/.jhc/targets.ini<br />
<br />
<pre><br />
[iphone]<br />
cc=arm-apple-darwin-gcc<br />
merge=le32<br />
</pre><br />
<br />
and then invoke jhc with the --cross and -miphone options.<br />
<br />
= Other ways to stay in touch =<br />
<br />
Chat with us on the #haskell-iphone IRC channel on freenode.<br />
Does anyone know how to set up channel logging?</div>Subwhttps://wiki.haskell.org/index.php?title=IDEs&diff=29335IDEs2009-07-30T08:43:50Z<p>Subw: Moved XCode plugin to "outdated": Uses frameworks that no longer exist in current OS X.</p>
<hr />
<div>[[Category:Development tools]]<br />
Here are some options for using Haskell with various '''IDEs''':<br />
<br />
* [http://eclipsefp.sourceforge.net/ EclipseFP], plugin for Eclipse<br />
* [http://www.haskell.org/visualhaskell/ Visual Haskell], based on Microsoft's Visual Studio<br />
* [[Leksah]], an IDE for Haskell written in Haskell based on GTK+/gtk2hs.<br />
* [[hIDE]], now apparently orphaned<br />
* [[Haskell mode for Emacs]]<br />
* [http://www.cs.kent.ac.uk/people/staff/cr3/toolbox/haskell/Vim/vim.html Vim as a Haskell IDE, first steps], (a tour with screenshots)<br />
<br />
== See also ==<br />
* [[Applications and libraries/Program development#Editor support]]<br />
* [http://shim.haskellco.de/trac/wiki The aim of the shim (Superior Haskell Interaction Mode) project is to provide better support for editing Haskell code in VIM and Emacs] privious link is no longer valid [http://code.haskell.org/shim/ repo here]<br />
<br />
== Outdated ==<br />
* [http://www.hoovy.org/HaskellXcodePlugin/ plugin for Xcode]</div>Subwhttps://wiki.haskell.org/index.php?title=H3D&diff=24749H3D2008-12-14T12:06:11Z<p>Subw: </p>
<hr />
<div>Welcome to the H3D wiki. This page is meant for gathering ideas and suggestions for a 3D modelling application written in Haskell. <br />
Writing it should be about exploring the possibilites of Haskell, and adding stuff no other language else has.<br />
<br />
Current work:<br />
* Getting L-systems (["HaskLS"]) working in Haskell, and going on from there. <br />
* Haskell [[SceneGraph]]<br />
<br />
== Contributors ==<br />
<br />
'''Please mention your nickname on #haskell, for future reference. <br />
<br />
Also, that way we can determine how many people are willing to work on this project in the future.'''<br />
<br />
If you're willing to contribute (in any way: code, idea's, feedback, even money ;)) to this project, please add your name below. (no strings attached) <br />
<br />
* [http://haskell.org/hawiki/KennethHoste boegel] (project idea, creator of this wiki)<br />
* bourbaki (L-systems and Ogre3D idea)<br />
* sylvan (scene graph idea)<br />
** Also, it might be worthwhile to exploit the ongoing convergence of high-end scanline renderers (a la Pixar) and consumer hardware. Next gen hardware (and even current high-end) could definatly produce movie-quality (honestly!) renderings with about the same throughput as a 1000-machine rendering farm, but with much less latency (one computer producing frames every two seconds, instead of a thousand computers producing one frame each every thirty minutes) which is definatly preferably from an artists standpoint.<br />
* [[User:Shelarcy|shelarcy]] (introduce Japanese page and write that summary)<br />
* Pseudonym (follow Renderman interface)<br />
* pipe (wolfgang8k): <br />
** write your own scanline renderer in Haskell, use OpenGL for real-time stuff (or write a renderer yourself)<br />
** start with a scenegraph (Haskell type) and a simple command line interface<br />
** use the CLI for basic operations on the scenegraph (adding stuff)<br />
** create a GUI with buttons which are bound to function like addSphere :: Scene -> Scene<br />
** keep a list a scenes for undo/redo purposes (a lot of memory, but very simple)<br />
** figure out a system for selecting objects (selection = list of integers, indices of objects in the scene)<br />
** functions like translate, scale, rotate of type Scene -> [Int] -> (dx,dy,dz) -> Scene<br />
** system for editing attributes of objects (radius of a Sphere, intensity of a light source)<br />
** with OpenGL, you only need a function in IO monad which takes a Scene value and renders it<br />
* marcusl : maybe interested in providing some scene graph bindings.<br />
* markw: See [[SceneGraph]]. Currently looking at OpenSceneGraph and started looking at CrystalSpace. Both of these target different uses - OSG is for virtual landscapes whilst CS is for games (and so includes 'out of the box' interaction and entity control). Both of these are C++ libraries and libraries to scripting languages have been developed using SWIG (hence my post on Haskell cafe asking if anyone had used SWIG with Haskell). They look like well crafted class libraries but but a missing the next level of abstraction. Haskell can offer a bridge to a higher level of abstraction; what that is doesn't seem to be obvious but a least Haskell will enable experimentation using, for instance, Conal's work. I am particularly interested in algorithmic generation of landscapes and game maps and how you can mimic the natural (and non-natural) process that sculpt the land (ie as the next level of abstraction).<br />
* lazor: I like the idea. I'm just generally interested in 3D modelling, I'm using wings3d right now. I would use whatever comes out of this effort, test it, write bug reports, etc., maybe even code some stuff. The possibility of collaborative modelling would make me happy.<br />
* hcube: [http://www.haskell.org/haskellwiki/Bullet bullet physics haskell wrapper], blender developer and user, fun project [http://stuntcarracer.sf.net stunts remake]<br />
* subw: I have had an interest in 3D (rendering & modelling) for a long time. I've used several different 3D packages (Cinema 4D, Lightwave) a few years back, I could test, and file bugs. Coding maybe when I know more math :-)<br />
== Open questions and suggestions ==<br />
<br />
* ''What do we want ?''<br />
<br />
An open source application that has to do with 3D modelling. Probably something real-time (like Maya and Blender), but not just<br />
another 3D modeller. We want to show off Haskell's strengths, and use techniques unique to Haskell and functional programming.<br />
<br />
* ''What can we use that is already available ?''<br />
<br />
Ogre3D: open source graphics engine; G3D: http://g3d-cpp.sourceforge.net/; L-systems: technique to create plants, feathers and the lot; SDL bindings (Lemmih); HOpenGL: OpenGL binding for Haskell; Monads (in Haskell) -> http://haskell.org/hawiki/MonadsAsContainers<br />
<br />
* ''Where do we begin ?''<br />
<br />
First idea: build an L-system, then create a simple Ogre3D binding to visualize stuff<br />
<br />
Second idea: start with a scene graph, and implement simple stuff like polygon soups and parametric surfaces at first <br />
<br />
* How do we use Ogre3D from within Haskell ?<br />
<br />
Use a C interface that doesn't exist yet :-)<br />
<br />
http://www.ogre3d.org/phpBB2/viewtopic.php?p=76429#76429<br />
<br />
or use Hacanon to call C++ code from within Haskell: [http://haskell.org/hawiki/Hacanon]<br />
<br />
* ''How far will we go with this ?''<br />
<br />
Don't know, as long as it's fun !<br />
<br />
* ''More open questions ?''<br />
<br />
boegel <br />
<br />
----<br />
<br />
One suggestion i would like to make is to use an existing 3D engine like www.ogre3d.org<br />
and just write a wrapper in haskell. So one can do all the fancy math stuff in haskell and<br />
just push the meshes and such into the engine.<br />
<br />
[The problem with this approach is that it constrains one to use the features of that engine. It is far more interesting to write new kinds of renderers.]<br />
<br />
* http://www.cs.wpi.edu/~emmanuel/courses/cs563/write_ups/bradg/feathers/featherpaper.htm#intro<br />
* http://www.geocities.com/blenderdungeon/lsystem/<br />
* http://www.nbb.cornell.edu/neurobio/land/OldStudentProjects/cs490-94to95/hwchen/<br />
* http://en.wikipedia.org/wiki/L-system<br />
* http://algorithmicbotany.org/papers/<br />
* http://algorithmicbotany.org/virtual_laboratory/<br />
* http://citeseer.lcs.mit.edu/deussen98realistic.html<br />
<br />
This would make it necessary to write a good and flexible mesh class.<br />
I would prefer something with which you can do fancy things like glueing<br />
two meshes. Maya has some interesting features that could easily be<br />
implemented that way.<br />
<br />
bourbaki<br />
<br />
== Suggestions - idea's - stuff we can use ==<br />
<br />
Here are some ideas (feel free to add !):<br />
* boegel's ray tracing application HRay: http://www.elis.ugent.be/~kehoste/Haskell/HRay<br />
* boegel's HaskLS (L-System implementation in Haskell): http://www.elis.ugent.be/~kehoste/Haskell/HaskLS<br />
* bourbaki's spline renderer: http://codemages.sf.net/homotopy1.hs<br />
* benny's ray tracing application hrayt: http://benny.kramekweb.com/hrayt/<br />
* Andy's Htrace: http://www.nobugs.org/developer/htrace/<br />
* Bernie's bjpop-ray: http://www.cs.mu.oz.au/~bjpop/code.html<br />
* tanakh's glexcess demo: http://d.hatena.ne.jp/tanakh/20050324<br />
** summary for this page: tanakh port http://www.glexcess.com/ demo for haskell (http://fxp.infoseek.ne.jp/haskell/glexcess_haskell.zip). He knows that is ported for D language by yaneurao (http://www.sun-inet.or.jp/~yaneurao/) too. He ported only Scene1 and Scene2. He is tired this work - port C code to Haskell by functionality code. He already developed demo framwork, so he hope other person try to develop full scene.<br />
* tanakh and his friend - nushio made Haskell shooting game. this game use only wireframe for character : http://www.geocities.jp/takascience/<br />
** summary for this page: this game name is Shu-thing. this page has 4 screen shot and game with source (http://www.geocities.jp/takascience/windows/shu-thing.zip). Command : move - cursor key, shoot - y, quite this game - q. english translation of the page available at(http://www.geocities.jp/takascience/index_e.html).<br />
* wolfgang's POV-Ray's object viewer VOP: http://www.kfunigraz.ac.at/imawww/thaller/wolfgang/vop-intro.html<br />
* Conal Elliott's Vertigo: (http://conal.net/Vertigo/). Could ideas be taken from this to get a flexible material system?<br />
* Marcus' HSpark: http://www.yar.nu/macke/hspark/ . But you can't get latest code, you can get only older version that can't use with sample code. (Code on semi-broken HDD. Will try to get some data off it. /Marcus)<br />
* You might check out [http://www.cairographics.org/hscairo hscairo]. From Cairo's description: "Cairo is a vector graphics library designed to provide high-quality display and print output. Currently available backends include the X Window System, OpenGL (via [WWW]glitz), Quartz, win32, in-memory image buffers, PNG images, PostScript, and PDF files."<br />
* Lemmih's [http://www.libsdl.org SDL] binding: darcs get http://scannedinavian.org/~lemmih/SDLstable/<br />
* Check out Wings 3d, open source modeler written in Erlang: http://www.wings3d.com/<br />
* Banyan: a 3D modeller with shared repository http://www.schemearts.com/banyan/wiki<br />
* open source modeller: http://k3d.sourceforge.net/ (Pseudonym)<br />
* Pseudonym's fluid simulator<br />
* Another simple raytracer, written by someone (can't remember who) and extended by Pseudonym to use proper sampling strategies: http://andrew.bromage.org/rt.hs<br />
* follow the RenderMan interface: http://www.rendermanacademy.com<br />
* sylvan mentioned OpenSceneGraph as a possible inspiration: http://www.openscenegraph.org/<br />
* shelarcy mentioned Open Inventor, yet another 3D toolkit (C++,Java)<br />
* marcusl thinks http://opensg.vrsource.org/ is a very nice open source scene graph.<br />
* [http://hackage.haskell.org/trac/PolyFunViz/wiki Lazy Polytypic Functional Visualisation] Includes implementation of Marching Cubes algorithm in Haskell.<br />
* [http://verse.blender.org Verse] support would be interesting.<br />
* A collaborative modeler. Take a look at the [http://www.cubeengine.com Cubeengine], it features a mode where you can edit the map, even in a cooperative way in multiplayer. Something like that but as a real modeler would be great.<br />
* Try to be modular: Ability to combine different modelers, rendering engines &c. built on a minimal shared base (SceneGraph?) with also minimal interfaces. This helps innovation, because if you rewrite one part of the pipeline, the rest doesn't break.<br />
<br />
Any suggestions are welcome !<br />
<br />
<br />
boegel<br />
<br />
----<br />
<br />
Note to self:<br />
<br />
L-system information<br />
<br />
* http://www.inf.ed.ac.uk/teaching/courses/inf1/fp/assignments/ex3.pdf<br />
* http://planet.plt-scheme.org/<br />
* http://matt.blissett.me.uk/programming/haskell/lsystem/<br />
<br />
Useing Hray to render the Lsystems<br />
maybe useing metaballs for the branches<br />
<br />
[[Category:Applications]]<br />
[[Category:3D]]<br />
<br />
<br />
-------------</div>Subwhttps://wiki.haskell.org/index.php?title=H3D&diff=24748H3D2008-12-14T12:01:06Z<p>Subw: Added contributor.</p>
<hr />
<div>Welcome to the H3D wiki. This page is meant for gathering ideas and suggestions for a 3D modelling application written in Haskell. <br />
Writing it should be about exploring the possibilites of Haskell, and adding stuff no other language else has.<br />
<br />
Current work:<br />
* Getting L-systems (["HaskLS"]) working in Haskell, and going on from there. <br />
* Haskell [[SceneGraph]]<br />
<br />
== Contributors ==<br />
<br />
'''Please mention your nickname on #haskell, for future reference. <br />
<br />
Also, that way we can determine how many people are willing to work on this project in the future.'''<br />
<br />
If you're willing to contribute (in any way: code, idea's, feedback, even money ;)) to this project, please add your name below. (no strings attached) <br />
<br />
* [http://haskell.org/hawiki/KennethHoste boegel] (project idea, creator of this wiki)<br />
* bourbaki (L-systems and Ogre3D idea)<br />
* sylvan (scene graph idea)<br />
** Also, it might be worthwhile to exploit the ongoing convergence of high-end scanline renderers (a la Pixar) and consumer hardware. Next gen hardware (and even current high-end) could definatly produce movie-quality (honestly!) renderings with about the same throughput as a 1000-machine rendering farm, but with much less latency (one computer producing frames every two seconds, instead of a thousand computers producing one frame each every thirty minutes) which is definatly preferably from an artists standpoint.<br />
* [[User:Shelarcy|shelarcy]] (introduce Japanese page and write that summary)<br />
* Pseudonym (follow Renderman interface)<br />
* pipe (wolfgang8k): <br />
** write your own scanline renderer in Haskell, use OpenGL for real-time stuff (or write a renderer yourself)<br />
** start with a scenegraph (Haskell type) and a simple command line interface<br />
** use the CLI for basic operations on the scenegraph (adding stuff)<br />
** create a GUI with buttons which are bound to function like addSphere :: Scene -> Scene<br />
** keep a list a scenes for undo/redo purposes (a lot of memory, but very simple)<br />
** figure out a system for selecting objects (selection = list of integers, indices of objects in the scene)<br />
** functions like translate, scale, rotate of type Scene -> [Int] -> (dx,dy,dz) -> Scene<br />
** system for editing attributes of objects (radius of a Sphere, intensity of a light source)<br />
** with OpenGL, you only need a function in IO monad which takes a Scene value and renders it<br />
* marcusl : maybe interested in providing some scene graph bindings.<br />
* markw: See [[SceneGraph]]. Currently looking at OpenSceneGraph and started looking at CrystalSpace. Both of these target different uses - OSG is for virtual landscapes whilst CS is for games (and so includes 'out of the box' interaction and entity control). Both of these are C++ libraries and libraries to scripting languages have been developed using SWIG (hence my post on Haskell cafe asking if anyone had used SWIG with Haskell). They look like well crafted class libraries but but a missing the next level of abstraction. Haskell can offer a bridge to a higher level of abstraction; what that is doesn't seem to be obvious but a least Haskell will enable experimentation using, for instance, Conal's work. I am particularly interested in algorithmic generation of landscapes and game maps and how you can mimic the natural (and non-natural) process that sculpt the land (ie as the next level of abstraction).<br />
* lazor: I like the idea. I'm just generally interested in 3D modelling, I'm using wings3d right now. I would use whatever comes out of this effort, test it, write bug reports, etc., maybe even code some stuff. The possibility of collaborative modelling would make me happy.<br />
* hcube: [http://www.haskell.org/haskellwiki/Bullet bullet physics haskell wrapper], blender developer and user, fun project [http://stuntcarracer.sf.net stunts remake]<br />
* subw: I have had an interest in 3D (rendering & modelling) for a long time. I've used several different 3D packages (Cinema 4D, Lightwave) a few years back, I could test, and file bugs. Coding maybe when I know more math :-)<br />
== Open questions and suggestions ==<br />
<br />
* ''What do we want ?''<br />
<br />
An open source application that has to do with 3D modelling. Probably something real-time (like Maya and Blender), but not just<br />
another 3D modeller. We want to show off Haskell's strengths, and use techniques unique to Haskell and functional programming.<br />
<br />
* ''What can we use that is already available ?''<br />
<br />
Ogre3D: open source graphics engine; G3D: http://g3d-cpp.sourceforge.net/; L-systems: technique to create plants, feathers and the lot; SDL bindings (Lemmih); HOpenGL: OpenGL binding for Haskell; Monads (in Haskell) -> http://haskell.org/hawiki/MonadsAsContainers<br />
<br />
* ''Where do we begin ?''<br />
<br />
First idea: build an L-system, then create a simple Ogre3D binding to visualize stuff<br />
<br />
Second idea: start with a scene graph, and implement simple stuff like polygon soups and parametric surfaces at first <br />
<br />
* How do we use Ogre3D from within Haskell ?<br />
<br />
Use a C interface that doesn't exist yet :-)<br />
<br />
http://www.ogre3d.org/phpBB2/viewtopic.php?p=76429#76429<br />
<br />
or use Hacanon to call C++ code from within Haskell: [http://haskell.org/hawiki/Hacanon]<br />
<br />
* ''How far will we go with this ?''<br />
<br />
Don't know, as long as it's fun !<br />
<br />
* ''More open questions ?''<br />
<br />
boegel <br />
<br />
----<br />
<br />
One suggestion i would like to make is to use an existing 3D engine like www.ogre3d.org<br />
and just write a wrapper in haskell. So one can do all the fancy math stuff in haskell and<br />
just push the meshes and such into the engine.<br />
<br />
[The problem with this approach is that it constrains one to use the features of that engine. It is far more interesting to write new kinds of renderers.]<br />
<br />
* http://www.cs.wpi.edu/~emmanuel/courses/cs563/write_ups/bradg/feathers/featherpaper.htm#intro<br />
* http://www.geocities.com/blenderdungeon/lsystem/<br />
* http://www.nbb.cornell.edu/neurobio/land/OldStudentProjects/cs490-94to95/hwchen/<br />
* http://en.wikipedia.org/wiki/L-system<br />
* http://algorithmicbotany.org/papers/<br />
* http://algorithmicbotany.org/virtual_laboratory/<br />
* http://citeseer.lcs.mit.edu/deussen98realistic.html<br />
<br />
This would make it necessary to write a good and flexible mesh class.<br />
I would prefer something with which you can do fancy things like glueing<br />
two meshes. Maya has some interesting features that could easily be<br />
implemented that way.<br />
<br />
bourbaki<br />
<br />
== Suggestions - idea's - stuff we can use ==<br />
<br />
Here are some ideas (feel free to add !):<br />
* boegel's ray tracing application HRay: http://www.elis.ugent.be/~kehoste/Haskell/HRay<br />
* boegel's HaskLS (L-System implementation in Haskell): http://www.elis.ugent.be/~kehoste/Haskell/HaskLS<br />
* bourbaki's spline renderer: http://codemages.sf.net/homotopy1.hs<br />
* benny's ray tracing application hrayt: http://benny.kramekweb.com/hrayt/<br />
* Andy's Htrace: http://www.nobugs.org/developer/htrace/<br />
* Bernie's bjpop-ray: http://www.cs.mu.oz.au/~bjpop/code.html<br />
* tanakh's glexcess demo: http://d.hatena.ne.jp/tanakh/20050324<br />
** summary for this page: tanakh port http://www.glexcess.com/ demo for haskell (http://fxp.infoseek.ne.jp/haskell/glexcess_haskell.zip). He knows that is ported for D language by yaneurao (http://www.sun-inet.or.jp/~yaneurao/) too. He ported only Scene1 and Scene2. He is tired this work - port C code to Haskell by functionality code. He already developed demo framwork, so he hope other person try to develop full scene.<br />
* tanakh and his friend - nushio made Haskell shooting game. this game use only wireframe for character : http://www.geocities.jp/takascience/<br />
** summary for this page: this game name is Shu-thing. this page has 4 screen shot and game with source (http://www.geocities.jp/takascience/windows/shu-thing.zip). Command : move - cursor key, shoot - y, quite this game - q. english translation of the page available at(http://www.geocities.jp/takascience/index_e.html).<br />
* wolfgang's POV-Ray's object viewer VOP: http://www.kfunigraz.ac.at/imawww/thaller/wolfgang/vop-intro.html<br />
* Conal Elliott's Vertigo: (http://conal.net/Vertigo/). Could ideas be taken from this to get a flexible material system?<br />
* Marcus' HSpark: http://www.yar.nu/macke/hspark/ . But you can't get latest code, you can get only older version that can't use with sample code. (Code on semi-broken HDD. Will try to get some data off it. /Marcus)<br />
* You might check out [http://www.cairographics.org/hscairo hscairo]. From Cairo's description: "Cairo is a vector graphics library designed to provide high-quality display and print output. Currently available backends include the X Window System, OpenGL (via [WWW]glitz), Quartz, win32, in-memory image buffers, PNG images, PostScript, and PDF files."<br />
* Lemmih's [http://www.libsdl.org SDL] binding: darcs get http://scannedinavian.org/~lemmih/SDLstable/<br />
* Check out Wings 3d, open source modeler written in Erlang: http://www.wings3d.com/<br />
* Banyan: a 3D modeller with shared repository http://www.schemearts.com/banyan/wiki<br />
* open source modeller: http://k3d.sourceforge.net/ (Pseudonym)<br />
* Pseudonym's fluid simulator<br />
* Another simple raytracer, written by someone (can't remember who) and extended by Pseudonym to use proper sampling strategies: http://andrew.bromage.org/rt.hs<br />
* follow the RenderMan interface: http://www.rendermanacademy.com<br />
* sylvan mentioned OpenSceneGraph as a possible inspiration: http://www.openscenegraph.org/<br />
* shelarcy mentioned Open Inventor, yet another 3D toolkit (C++,Java)<br />
* marcusl thinks http://opensg.vrsource.org/ is a very nice open source scene graph.<br />
* [http://hackage.haskell.org/trac/PolyFunViz/wiki Lazy Polytypic Functional Visualisation] Includes implementation of Marching Cubes algorithm in Haskell.<br />
* [http://verse.blender.org Verse] support would be interesting.<br />
* A collaborative modeler. Take a look at the [http://www.cubeengine.com Cubeengine], it features a mode where you can edit the map, even in a cooperative way in multiplayer. Something like that but as a real modeler would be great.<br />
<br />
Any suggestions are welcome !<br />
<br />
<br />
boegel<br />
<br />
----<br />
<br />
Note to self:<br />
<br />
L-system information<br />
<br />
* http://www.inf.ed.ac.uk/teaching/courses/inf1/fp/assignments/ex3.pdf<br />
* http://planet.plt-scheme.org/<br />
* http://matt.blissett.me.uk/programming/haskell/lsystem/<br />
<br />
Useing Hray to render the Lsystems<br />
maybe useing metaballs for the branches<br />
<br />
[[Category:Applications]]<br />
[[Category:3D]]<br />
<br />
<br />
-------------</div>Subwhttps://wiki.haskell.org/index.php?title=Xmonad/Using_xmonad_on_Apple_OSX&diff=18459Xmonad/Using xmonad on Apple OSX2008-01-19T20:24:39Z<p>Subw: </p>
<hr />
<div>xmonad runs well on Apple OSX machines, and needs little work to be<br />
useful. This page collects advice and information on using xmonad<br />
successfully with OSX.<br />
<br />
<gallery><br />
Image:Screen-atomb-apple.png|Apple OSX<br />
</gallery><br />
<br />
If you're using xmonad on a mac, add details about your configuration<br />
here!<br />
<br />
<br />
-------<br />
Some instructions for using XMonad:<br />
<br />
1. Build and install XMonad like you would any other Haskell library.<br />
<br />
2. do the following on the Terminal:<br />
$ cp /private/etc/X11/xinit/xinitrc ~/.xinitrc<br />
$ chmod +w ~/.xinitrc<br />
$ vim ~/.xinitrc <br />
#comment out the line 'exec quartz-wm' and add PATH-TO-XMONAD/xmonad after it.<br />
<br />
3. Open X11. XMonad should be running now.<br />
<br />
<br />
<br />
XMonad is not very usable on OS X, as most apps are Cocoa or Carbon apps, meaning they don't run under Apple's X11.app and thus not within XMonad.<br />
<br />
You could, however, probably install GTK+, WxWidgets, Qt... and rebuild many apps like Firefox, Emacs... to use X11.<br />
<br />
[[Category:XMonad]]</div>Subwhttps://wiki.haskell.org/index.php?title=Xmonad/Using_xmonad_on_Apple_OSX&diff=18433Xmonad/Using xmonad on Apple OSX2008-01-19T15:52:10Z<p>Subw: Added some basic instructions.</p>
<hr />
<div>xmonad runs well on Apple OSX machines, and needs little work to be<br />
useful. This page collects advice and information on using xmonad<br />
successfully with OSX.<br />
<br />
<gallery><br />
Image:Screen-atomb-apple.png|Apple OSX<br />
</gallery><br />
<br />
If you're using xmonad on a mac, add details about your configuration<br />
here!<br />
<br />
<br />
-------<br />
Some instructions for using XMonad:<br />
<br />
1. Build and install XMonad like you would any other Haskell library.<br />
<br />
2. do the following on the Terminal:<br />
$ cp /private/etc/X11/xinit/xinitrc ~/.xinitrc<br />
$ chmod +w ~/.xinitrc<br />
$ vim ~/.xinitrc <br />
#comment out the line 'exec quartz-wm' and add PATH-TO-XMONAD/xmonad after it.<br />
<br />
3. open X11. XMonad should be running now.<br />
<br />
<br />
[[Category:XMonad]]</div>Subw