ng/702/30
EDIT: DK2 works, not with positional tracking yet (14/09/15)
Source is here:
https://github.com/provolot/RhinoRift
Steps:
1) Download these files (also attached below):
https://github.com/provolot/oculus-grasshopper/raw/master/oculus-grasshopper_v0.4.ghx
https://github.com/provolot/oculus-grasshopper/raw/master/OpenTrackRiftGrasshopperUDP.ini
https://github.com/provolot/oculus-grasshopper/raw/master/oculus-grasshopper-test_v0.1.3dm
2) Download OpenTrack - http://ananke.laggy.pk/opentrack/, and setup/install. Once installed, double-click to open.
3) In OpenTrack, load the 'OpenTrackRiftGrasshopperUDP.ini' profile. Click the 'Start' button and move your Rift around - make sure that it looks like the Yaw/Pitch/Roll data is being sent. TX/TY/TZ will all be 0, as Oculus doesn't have absolute positioning data.
4) In Rhino, open the test 3dm. You'll notice that there are two viewports - called 'LeftEye' and 'RightEye'. These have been placed to mimic where the screens should be for the Oculus Rift --- but only when Rhino is in fullscreen mode, with the command 'Fullscreen'. The placement needs to be tweaked, but should work.
If you want to use your own model, you can load your own .3dm file in Rhino, then you can right-click on the viewport name, and go to Viewport Layout > Read from File. If you then load my test file, Rhino should open my two viewports, sized correctly, onto your model.
The placement of these viewports need to be tweaked; if you find a better viewport layout, upload an empty Rhino file with your viewports, and we can share eye-layout 'templates'!
5) In Grasshopper, open the .ghx definition. Everything that is multiple-grouped is a value that can be changed. Two things here:
- IPD: Set this and convert it to the proper units for your model.
- Left/right viewport names. In this case, leave this as-is, since you're using my example file.
6) Turn on the Grasshopper Timer, if it isn't on already.
7) In the GH definition, toggle 'SyncEyes' to be True. Then, in the left viewport, try orbiting around with the mouse. The 'RightEye' viewport should move around as well, pretty much simultaneously.
8) In OpenTrack, click 'Start', then toggle 'ReadUDP' to be True. You should see the 'OpenTrackInfo' panel fill with data that's constantly changing.
9) Move around the landscape with your camera, and when you set on a starting view that's ideal, click the triangle of the Data Dam component to 'store' the data.
10) Finally, toggle 'OculusMove' to be true. If all works correctly, both viewports should move based on the Rift's movement.
Let me know if you have any problems!
Cheers,
Dan…
Added by Dan Taeyoung at 11:47pm on December 10, 2013
you'll learn to create and edit accurate free-form 3-D NURBS models. This fast-moving class covers most of Rhino's functionality, including the most advanced surfacing commands. In addition, you'll learn concepts and features of Grasshopper at an accelerated pace in an instructor-led hands-on instruction environment. The advantages of using Grasshopper in preliminary design and concept development come to life since the students will be able to create their models on a Type A Machines' Series 1 3D printer. Participants should have basic knowledge of Rhino 5.
Location:Type A Machines - SmithGroup San Francisco (map)301 Battery StreetSan Francisco, CA 94111United States
To Register:e-mail: Jackie Nasser - McNeel Miamiphone: (305) 513 4445
…
ed. This image shows the problem:
If this is not what you are seeing on your own machine when you hook up your HBZones to a panel, then you have not uploaded the right Rhino and Grasshopper file.
2) You have not run your HBZones through an EnergyPlus simulation. You need to do this in order to get data with which to construct the indoor temperature map. I would strongly recommend following along through the first 8 videos of this tutorial series before trying to construct an indoor radiant temperature map of your own project (https://www.youtube.com/playlist?list=PLruLh1AdY-SgW4uDtNSMLeiUmA8YXEHT_)
3) You are using components from the last stable release, which is fine but you should know that there has been a lot of development on the indoor temperature map workflow in the last 20 days (there is now a much cleaner workflow that integrates the air and radiant temperature with comfort alanyses now on the github). If you imagine using this workflow frequently, I would recommend updating with the Ladybug_Update Ladybug and Hopneybee_Update Honeybee components. See the attached recent file for how the workflow is currently structured.
-Chris…
hopper and the GH file.
2. There is a drop down menu at the top of Pure Data that reads "Media". Click on "Midi". If your device connection is working, you should see it show up as an option. Set the device to MIDI in. You don't really need to set a MIDI out unless you are planning to send messages back to the device (not sure why you would want to).
3. The boxes labeled "ctlin" with a number are the Control Change in's. In Pure Data go to the "Edit" menu and click on "Edit Mode". Click on one of the "ctlin #" boxes and change the number to match the Control Change number of your physical controller. Mine starts with 5 in the upper right and goes to 65. Each control change number shows up on the display window of my device when I use it which made it easy.
4. Continue this process for all your controls. Delete the unneccesary "ctlin #" boxes by selecting them with a fence and clicking "delete". When you hover over one of the wires you should see and "x". Press the "backspace" key to delete it.
5. Now go down to the "pack f f f ..." box. There should be as many "f" or "floats" in that box as there are you number of controllers. Delete the remaining "f".
6. Next look at the box below that reads "send /0...". Make sure to keep the "/0". If you delete the "/" it will crash Grasshopper. Change the number "5" to match your first control change number. Leave the $numbers alone. You'll want to keep them sequential. Continue change the control change numbers to match all of yours. The $numbers should match the order in which you wired each controller to the "pack f f f..." box.
7. For testing purposes hover over the input on the upper let of the "print" box and connect it to the out of the "send" box. If everything is mapped correctly, working properly, and you go back to the "main" PD window you should see a list of all controllers will a value (0 to 127) next to it. As you turn a knob, the value next to the control change number will increase from 0 to 127. This will give you a good indication of whether or not everything is working and if you mapped it correctly.
8. Click on the "connect OSC" box. You might need to exit out of "edit mode" and back to "performance" mode in the PD canvas.
9. Go To Grasshopper. If everything is working you should see the Panel read "new message" when you turn a knob. At this point it should be pretty obvious how to modify the Grasshopper components. I've tried to keep everything as consistent as possible. Since I filtered out the "/0", the "explode data treat" component starts at 0, the numbers are shifted down by 1.
I just left the IP address, etc. alone on the gHowl UDP component. Just make sure the "port number" matches the OSC port number on the send in Pure Data. If you crash, you may need to choose a new number.
Hope that helps. Let me know if you have any questions. If your computer is not recognizing your midi controller, you may need to install "Midiyoke". I did at first, but it turns out I didn't need it after all.
Best of luck.
…
NURBS using Rhinoceros. Content includes: Basic terminology, user interface, workflow strategies, using reference material and creating drawings from modeled geometry.
Workshop 2: Introduction to Parametric Design
Instructor: Rajaa Issa
(12:30 PM-3:30 PM)
This workshop will introduce the general framework of parametric thinking with a series of hands-on tutorials using Grasshopper for Rhinoceros. It is meant for beginners who have little to no idea about parametric modeling. The workshop will introduce the general components of an algorithm, design workflow, Grasshopper interface and visualization techniques. The students are expected to have basic knowledge of the Rhino modeling environment. Workshop 1 should fulfill this requirement.
Registration: Computers and software will be provided. Space is limited to 20 seats per workshop. The fee for each workshop is $60 (plus a $4.29 fee). There is a special rate of $30 (plus a $2.64 fee) for students and teachers provided they request a discount here with their school email address before registering. Register now……
. Now i can duild the angle (i check angle with a vec cross prod). I sort the angles and the node index
now i can pass the point as ventrices to a polyline component.
and at the end the polyline in green
Example of a bad figure
Why bad?
Because i can order the points in the marked area. The angle method is not working enymore.
Point 8 and 9 are ok. Point 6 comes now before the 9.
Point 14 is ok. But point 15 comes before. And so on...
I have no idea how to solve this…
Ruby, [9] R, [10] PHP ,[11] MATLAB [12]
Maybe it can find it's way into GH somehow..
when using the default GH random number generator i mostly use much higher seed values.…
Added by Robert Vier at 10:08am on December 27, 2012
o: http://github.com/HeinzBenjamin/FlexCLI/issues
Download
You can find FlexHopper here:
http://www.food4rhino.com/app/flexhopper
and here:
https://github.com/HeinzBenjamin/FlexCLI
Info
FlexHopper offers physics computation in Grasshopper. It is GPU-based and therefor very fast. Currently supported modes of simulation are: free particles, fluids, rigid bodies, soft bodies, tensile structures and cloth, custom constraints.
FlexHopper is a Grasshopper plugin built on top of FlexCLI - Flex Common Language Interface. FlexCLI is built against NVidia Flex release 1.1.0. NVidia Flex is patented property of NVidia. FlexCLI and FlexHopper are openly accessible under the GNU License through my Github account. (Link above)
For more information on NVidia Flex go here: https://developer.nvidia.com/flex and https://developer.nvidia.com/nvidia-flex-110-released
FlexCLI runs on x64 architectures only. It was built against .Net 4.5.2
FlexHopper was tested with Rhino5 64bit and Grasshopper 0.9.0076 WIP
Requirements
Windows 7, 8, 8.1 or 10 64bit
NVidia or AMD Graphics Card
NVIDIA: GeForce Game Ready Driver 372.90 or above
AMD: Radeon Software Version 16.9.1 or above…
he "return" is comment out as shown below?
After restarting Rhino and Grasshopper, I opened the outdoors_airflow demo file, and the first step of creating the case file is ok:
Then the blockMesh component gives the following error: seems I have to manually start OF first..
so, as the error message suggested, I open OF by Start_OF.bat:
Then come back to the blockMesh component, now it can be executed while the OF command line window is also openning:
... and the blockMesh finished successfully:
... so I proceeded to run snappyHexMesh, checkMesh and update fvScheme:
... up to the simpleFoam component, I got the error again:
The warning message is:
1. Solution exception: --> OpenFOAM command Failed!#0 Foam::error::printStack(Foam::Ostream&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #1 Foam::sigFpe::sigHandler(int) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #2 ? in "/lib64/libc.so.6" #3 double Foam::sumProd<double>(Foam::UList<double> const&, Foam::UList<double> const&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #4 Foam::PCG::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #5 Foam::GAMGSolver::solveCoarsestLevel(Foam::Field<double>&, Foam::Field<double> const&) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #6 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #7 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #8 Foam::fvMatrix<double>::solveSegregated(Foam::dictionary const&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libfiniteVolume.so" #9 Foam::fvMatrix<double>::solve(Foam::dictionary const&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #10 Foam::fvMatrix<double>::solve() in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #11 ? in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #12 __libc_start_main in "/lib64/libc.so.6" #13 ? in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam"
... and the command lines in the readMe! output are pretty long and it is saved in the text file attached here.
So, my questions are:
1. why I have to manually start OF first before I can use the blockMesh component? Should butterfly automatically start OF?
2. what might be the cause of the unsuccessful run of simpleFoam in the end?
Hope you can kindly advise! Thank you!
- Ji
…
ted (in the old scheme, all inputs were always taken into account) and it's more obvious what happens to the data just by looking at an image. Also, it clears out the component menu and it's easier to add more functionality later on without creating too much confusion.
Interpolate will 'sample' the data at equally spaced intervals. Let's say you have a list of 8 fruits, as I used in my example. What happens if you interpolate this list using 4 samples? Well, the first and last sample are always centered on the first and last items in the original list. The in between samples are distributed at equidistant intervals:
So you'd end up with a list containing {Lemon, Bergamot, Mandarin, Tangerine}. If you interpolate this list using 12 equally spaced samples, it will look like this:
and it results in a list containing {Lemon, Lime, Lime, Bergamot, Grapefruit, Grapefruit, Orange, Orange, Mandarin, Rangpur, Rangpur, Tangerine}. Of course interpolating a list may result in weird sampled intervals because of the rounding of sample parameter to list indices.
Interpolation does not sample in between values. It will not return a value that is 30% Grapefruit and 70% Orange. This kind of interpolation is only possible on a subset of data types (numbers, vectors, points, colours etc.) but these components must operate on all data types. I added a specific interpolation component as well, that performs numeric sampling using 4 possible interpolation functions, but this is a wholly different kind of interpolation.
--
David Rutten
david@mcneel.com
Poprad, Slovakia…